java gc免费申请

时间:2011-10-13 21:51:06

标签: java tomcat garbage-collection

使用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)akka 0.10 3)球衣1.2

1 个答案:

答案 0 :(得分:0)

问题可能就像你需要-XX:UnlockExperimentalVMOptions一样简单,因为(AFAIK)G1GC仍然被认为是实验性的。


如果不能解决问题,你可以使用其他各种实验性的,特定于HotSpot的JVM args:

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

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