0
使用jmx并监控一个web应用程序时,我注意到GC(G1)运行时,所有线程都冻结,应用程序不响应。我配置Tomcat的JVM中是这样的:当使用的堆内存达到最大极限(2GB)和GC记忆深刻工作java gc释放应用程序
-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
应用程序没有响应。在gc工作后,使用的堆降到300Mb。是否可能为GC设置不同的工作方式?这对我的应用程序来说是一个很大的问题,因为我使用了hazelcast和jgroups,并且每次gc工作时,都会导致集群分区。
,我在此Web应用程序使用一些特殊的库: 1)hazelcast 1.9.4 2)阿卡0.10 3)球衣1.2
您使用的是32位JVM/JDK吗?如果是这样,最大可分配内存是2 Gig,所以你可能会用Xms2048m来做到这一点(它试图从头开始分配2 Gig的头) –