-XX:+UseConcMarkSweepGC手動指定使用CMS收集器執行內存回收任務。- 開啟該參數后會自動將-XX:+UseParNewGC打開。即: ParNew(Young區用)+CMS(Old區用)+Serial Old的組合。
-XX:CMSlnitiatingOccupanyFraction設置堆內存使用率的閾值,一旦達到該閾值,便開始進行回收。- JDK5及以前版本的默認值為68,即當老年代的空間使用率達到68%時,會執行一次CMS回收。
JDK6及以上版本默認值為92% - 如果內存增長緩慢,則可以設置一個稍大的值,大的閾值可以有效降低CMS的觸發頻率,減少老年代回收的次數可以較為明顯地改善應用程序性能。反之,如果應用程序內存使用率增長很快,則應該降低這個閾值,以避免頻繁觸發老年代串行收集器。因此
通過該選項可便可以有效降低Full GC的執行次數。
- JDK5及以前版本的默認值為68,即當老年代的空間使用率達到68%時,會執行一次CMS回收。
-XX:+UseCMSCompactAtFullCollection用於指定在執行完Full GC后對內存空間進行壓縮整理,以此避免內存碎片的產生。不過由於內存壓縮整理過程無法並發執行,所帶來的問題就是停頓時間變得更長了。-XX:CMSFullGCsBeforeCompaction設置在執行多少次Full GC后對內存空間進行壓縮整理。-XX:ParallelCMSThreads設置CMS的線程數量。- CMS默認啟動的線程數是(ParallelGCThreads+3)/4,ParallelGCThreads 是年輕代並行收集器的線程數。當CPU資源比較緊張時,受到CMS收集器線程的影響,應用程序的性能在垃圾回收階段可能會非常糟糕。
作者:Shaw_Young
鏈接:https://www.jianshu.com/p/2082cbe0b776
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
