簡體   English   中英

JVM調整-CMS行為

[英]JVM Tuning - CMS behavior

當前,我正在使用以下jvm參數在Tomcat 7中運行應用程序:

-Dcatalina.home=E:\Tomcat
-Dcatalina.base=E:\Tomcat
-Djava.endorsed.dirs=E:\Tomcat\endorsed
-Djava.io.tmpdir=E:\TomcatE\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=E:\Tomcat\conf\logging.properties
-XX:MaxPermSize=512m
-XX:PermSize=512m
-XX:+UseConcMarkSweepGC
-XX:NewSize=7g
-XX:MaxTenuringThreshold=31
-XX:CMSInitiatingOccupancyFraction=90
-XX:+UseCMSInitiatingOccupancyOnly
-XX:SurvivorRatio=6
-XX:TargetSurvivorRatio=90
-verbose:gc -XX:+PrintGCDetails
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCDateStamps
-Xloggc:E:\Tomcat7\gc.log

我使用CMS作為垃圾回收器,其行為似乎很奇怪。 即使擁有13GB的舊版本,當執行主要收集時(我猜想占到了90%的占用空間-> -XX:CMSInitiatingOccupancyFraction = 90),CMS也無法清理大量對象(仍然具有at的占用空間)至少7GB)。 我不認為該應用程序具有如此長的對象(不確定!)。 難道不應該CMS釋放更多空間嗎? 還是可能與碎片有關?

由於這種行為,我有頻繁的CMS周期...我想減少這種情況。

即使使用低暫停GC,有時應用程序也會停止15-30秒...如何減少CMS中的暫停時間? 擁有更多JVMS而不是擁有20GB堆的JVMS是一個好主意嗎?

非常感謝

首先,可以使用以下命令轉儲堆轉儲文件:

jmap -heap:live heap.bin ${pid}

命令並通過墊找到長壽命的對象

其次,由於堆大小大於8G,可以嘗試使用Garbage First(G1)收集器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM