概念
Concurrent Mark Sweep 并發标記清除(多線程并且用的标記清除算法),會造成大量的記憶體碎片,離散的可用空間無法配置設定較大的對象
流程
參數
-
-XX:-CMSPrecleaningEnabled
不進行預清理
-
-XX:+UseConcMarkSweepGC
啟動 CMS 回收器,預設線程數(ParallelGCThreads + 3) /4
-
-XX:ConcGCThreads -XX:ParallelCMSThreads
設定并發線程數(并發是收集器和應用程式交替執行,并行是應用程式停止,多個線程一起執行 GC,并行回收器不是并發的是并行的)
-
-XX:CMSInitiatingOccupancyFraction
回收門檻值,預設 68(老年代空間隻用率達到 68%時,執行一次 CMS 回收,如果 CMS 回收失敗,則虛拟機将啟動老年代串行回收器,導緻應用程式中斷)
如果記憶體增長緩慢,則增大此值,減少老年代回收次數;如果記憶體增長過快,則降低此值,避免觸發老年代串行回收器
-
-XX:+UseCMSCompactAtFullCollection
CMS 垃圾回收後進行一次碎片整理(單線程)
-
-XX:+CMSFullGCsBeforeCompaction
進行多少次 CMS 後,進行一次記憶體壓縮
-
-XX:+CMSClassUnloadingEnabled
讓 CMS 可以回收 Perm 區