GC

CMS

介紹

用于對(duì)年老代的回收,目標(biāo)是盡量減少應(yīng)用的暫停時(shí)間,減少full gc發(fā)生的幾率,利用和應(yīng)用程序線(xiàn)程并發(fā)的垃圾回收線(xiàn)程來(lái)標(biāo)記清除年老代。適用于響應(yīng)時(shí)間大于吞吐量?jī)?yōu)先應(yīng)用

原理

初始標(biāo)記(CMS-initial-mark) -> 并發(fā)標(biāo)記(CMS-concurrent-mark) -> 重新標(biāo)記(CMS-remark) -> 并發(fā)清除(CMS-concurrent-sweep) ->并發(fā)重設(shè)狀態(tài)等待下次CMS的觸發(fā)(CMS-concurrent-reset),在1、3階段暫停應(yīng)用,整個(gè)時(shí)間小于200毫秒為優(yōu)。young generation的回收采用的仍然是并行復(fù)制收集器,這個(gè)跟Paralle gc算法是一致的

參數(shù)

-XX:+UseConcMarkSweepGC啟用CMS

-XX:+UseParallelGC:選擇垃圾收集器為并行收集器。此配置僅對(duì)年輕代有效??梢酝瑫r(shí)并行多個(gè)垃圾收集線(xiàn)程,但此時(shí)用戶(hù)線(xiàn)程必須停止。后臺(tái)系統(tǒng)任務(wù)可以使用此 gc。

-XX:+UseParNewGC:設(shè)置年輕代為多線(xiàn)程收集。可與CMS收集同時(shí)使用。在serial基礎(chǔ)上實(shí)現(xiàn)的多線(xiàn)程收集器。

-XX:ParallelCMSThreads=20 CMS線(xiàn)程回收數(shù)

-XX:ParallelGCThreads= N 年輕代線(xiàn)程回收數(shù),默認(rèn)是(ncpus <= 8) ? ncpus : 3 + ((ncpus * 5) / 8)

-XX:+UseCMSCompactAtFullCollection CMS是不會(huì)整理堆碎片的,為了防止堆碎片引起full gc,通過(guò)會(huì)開(kāi)啟CMS階段進(jìn)行合并碎片選項(xiàng),開(kāi)啟這個(gè)選項(xiàng)一定程度上會(huì)影響性能,配置適當(dāng)?shù)腃MSFullGCsBeforeCompaction來(lái)調(diào)整性能

-XX:CMSFullGCsBeforeCompaction=1 每次full gc進(jìn)行碎片的合并,以保證新生代的大對(duì)象能分配到老年代

-XX:+CMSParallelRemarkEnabled開(kāi)啟并行remark,減少remark暫停時(shí)間

-XX:+CMSScavengeBeforeRemark強(qiáng)制remark之前開(kāi)始一次minor gc,減少remark的暫停時(shí)間

-XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled?避免P區(qū)引起的full gc

-XX:CMSInitiatingOccupancyFraction=80年老代占比超過(guò)xx進(jìn)行CMS收集,年老代增長(zhǎng)較慢可調(diào)大該值,設(shè)置過(guò)高可能導(dǎo)致:Concurrent mode failed(由于CMS回收年老代的速度太慢,導(dǎo)致年老代在CMS完成前就被沾滿(mǎn),引發(fā)full gc)。計(jì)算公式:(Xmn-S0)/Old<=Old(1-F)

-XX:MaxTenuringThreshold 年齡達(dá)到一定閾值被移入老年代

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文閱讀 前言 這段時(shí)間懈怠了,罪過(guò)! 最近看到有同事也開(kāi)始用上了微信公眾號(hào)寫(xiě)博客了,挺好的~給他們點(diǎn)贊,這博客我...
    碼農(nóng)戲碼閱讀 6,144評(píng)論 2 31
  • 聲明:原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。http://www.itdecent.cn/u/e02df63eaa87 1、J...
    唐影若凡閱讀 1,331評(píng)論 0 6
  • 這篇文章是我之前翻閱了不少的書(shū)籍以及從網(wǎng)絡(luò)上收集的一些資料的整理,因此不免有一些不準(zhǔn)確的地方,同時(shí)不同JDK版本的...
    高廣超閱讀 16,042評(píng)論 3 83
  • 聲明:原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。http://www.itdecent.cn/u/e02df63eaa87 垃圾收...
    唐影若凡閱讀 1,150評(píng)論 1 6
  • System.gc整理 System.gc()源碼public static void gc() { Runtim...
    andersonoy閱讀 3,146評(píng)論 0 1

友情鏈接更多精彩內(nèi)容