0
我有一个独立独行的Java应用程序,其中JVM PARAMS是:JVM堆调整时-Xmx和-Xms是相同的,虽然
-Xmx2g -Xms2g -Xmn1g -XX:PermSize=96m -XX:+DisableExplicitGC
-XX:+UseFastAccessorMethods -XX:+UseParallelGC -XX:+UseParallelOldGC
-XX:MaxTenuringThreshold=63 -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true
我们可以看到,-Xmx和-Xms都2克,但我发现堆的大小总是调整了一下:
红线表示总堆大小,蓝色代表一个使用 我觉得红线应该是直的,但事实并非如此。 但在另一种网络应用程序,该JVM PARAMS是:
-Xmx2g -Xms2g -Xmn512m -XX:PermSize=196m -Xss256k -XX:+DisableExplicitGC
-XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70 -XX:-ReduceInitialCardMarks
-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true
其视觉堆的使用情况图表是:
总堆大小正好尽可能2g和红线是横向稳定,这是我认为应该的。
的两个应用程序的主要区别是所用的GC策略,一个是平行GC,另一个是CMS。 的GC策略是否对堆空间的大小调整有什么影响?或-Xmn PARAM对堆大小调整,我不知道有一定的影响?