java gc 释放应用程序

发布于 2024-12-10 05:40:12 字数 713 浏览 0 评论 0原文

使用 jmx 并监视 Web 应用程序,我注意到当 GC (G1) 运行时,所有线程都被冻结,并且应用程序没有响应。我这样配置tomcat jvm:

-Xms2048m
-Xmx2048m
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+DisableExplicitGC
-Xss2m
-XX:+CMSClassUnloadingEnabled
-XX:+UseG1GC
-Djava.net.preferIPv4Stack=true
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8338
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dhazelcast.logging.type=slf4j 

当使用的堆内存达到最大限制(2GB)并且GC深度处理内存时,应用程序不会响应。 gc 工作后,已用堆减少到 300Mb。是否可以为 GC 设置不同的工作方式?这对我的应用程序来说是一个大问题,因为我使用 hazelcast 和 jgroups,每次 gc 工作时,都会导致集群分区。

我在此 Web 应用程序中使用的一些特殊库: 1) 榛子 1.9.4 2)阿卡0.10 3) 球衣1.2

Using jmx and monitoring a web application, I notice when th GC (G1) is runnig , all threads are freezed, and the application does not responde. I configured the tomcat jvm in like this:

-Xms2048m
-Xmx2048m
-XX:NewSize=512m
-XX:MaxNewSize=512m
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+DisableExplicitGC
-Xss2m
-XX:+CMSClassUnloadingEnabled
-XX:+UseG1GC
-Djava.net.preferIPv4Stack=true
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8338
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dhazelcast.logging.type=slf4j 

The application does not respond when the used heap memory reach the max limit (2GB) and the GC deeply work on memory. After the gc work the used heap goes down to 300Mb. Is it possibile to setup a different way to work for the GC? This is a big problem for my application because I use hazelcast and jgroups and every time the gc works, it cause a paartition of the cluster.

Some special libraries that I use in this web application:
1) hazelcast 1.9.4
2) akka 0.10
3) jersey 1.2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぃ弥猫深巷。 2024-12-17 05:40:12

问题可能很简单,因为您需要 -XX:UnlockExperimentalVMOptions,因为(据我所知)G1GC 仍被认为是实验性的。


如果这不起作用,您还可以使用各种其他实验性的、特定于 HotSpot 的 JVM 参数:

  • -XX:+UseParallelGC
  • -XX:+UseConcMarkSweepGC
  • 等等...

参见http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html

The problem may be as simple as the fact that you need -XX:UnlockExperimentalVMOptions, since (AFAIK) G1GC is still considered experimental.


There are a variety of other experimental, HotSpot-specific JVM args you can play around with if that doesn't do the trick:

  • -XX:+UseParallelGC
  • -XX:+UseConcMarkSweepGC
  • etc...

See http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文