的JVM標誌(內存),如下什麼是CMS老GC的門檻,爲我們的服務器被觸發
-Xms2048m
-Xmx2048m
-Xss512k
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:NewSize=128m
-XX:MaxNewSize=128m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:+HeapDumpOnOutOfMemoryError
我需要找出確切時間老GC觸發即是它涉及到使用的總堆內存百分比?
我做了一些測試,以巨大的負載和使用監測VisualVM的和jstat應用。但是當實際上舊的gc被觸發時,我找不到任何模式。有時gc被觸發時,oldgen被利用只有27.13%,然後76.02%,92.61%等
有人可以提供一些提示什麼實際上觸發舊gc?
我需要找出觸發舊gc的內存閾值。有了這個,我可以在服務器中設置一些高內存警報警告(正確的設置排除了任何會被觸發的錯誤警報)?
這篇文章說gc會在默認情況下使用70%時觸發。但似乎沒有在這種情況下工作。 How full does the old generation have to be to trigger a major GC cycle?
感謝您的回答。在我的情況下CMSInitiatingOccupancyFraction沒有設置,所以我想這可能是默認的68%。我認爲,正如你所說的,JVM使用一些啓發式來決定閾值。那麼你是否說我沒有辦法事先決定門檻? – Kripz
我在說你應該設置這些設置。 – the8472