【深入淺出-JVM】(34):CMS 回收器
阿新 • • 發佈:2019-07-12
概念
Concurrent Mark Sweep 併發標記清除(多執行緒並且用的標記清除演算法),會造成大量的記憶體碎片,離散的可用空間無法分配較大的物件
流程
引數
- -XX:-CMSPrecleaningEnabled
不進行預清理 - -XX:+UseConcMarkSweepGC
啟動 CMS 回收器,預設執行緒數(ParallelGCThreads + 3) /4 - -XX:ConcGCThreads -XX:ParallelCMSThreads
設定併發執行緒數(併發是收集器和應用程式交替執行,並行是應用程式停止,多個執行緒一起執行 GC,並行回收器不是併發的是並行的) - -XX:CMSInitiatingOccupancyFraction
如果記憶體增長緩慢,則增大此值,減少老年代回收次數;如果記憶體增長過快,則降低此值,避免觸發老年代序列回收器 - -XX:+UseCMSCompactAtFullCollection
CMS 垃圾回收後進行一次碎片整理(單執行緒) - -XX:+CMSFullGCsBeforeCompaction
進行多少次 CMS 後,進行一次記憶體壓縮 - -XX:+CMSClassUnloadingEnabled
讓 CMS 可以回收 Perm 區