簡單分析java中CMS回收器
CMS(Concurrent Mark Sweep)回收器
它使用的是標(biāo)記清除算法,同時又是一個使用多線程并行回收的垃圾回收器。
CMS主要工作步驟
CMS工作時主要步驟有初始標(biāo)記、并發(fā)標(biāo)記、預(yù)清理、重新標(biāo)記、并發(fā)清除和并發(fā)重置。其中初始標(biāo)記和重新標(biāo)記是獨占系統(tǒng)資源的,而預(yù)清理、并發(fā)標(biāo)記、并發(fā)清除和并發(fā)重置是可以和用戶線程一起執(zhí)行的。因此它可以在應(yīng)用程序運行過程中進(jìn)行垃圾回收。
根據(jù)標(biāo)記清除算法,初始標(biāo)記、并發(fā)標(biāo)記和重新標(biāo)記都是為了標(biāo)記出需要回收的對象。并發(fā)清理則是在標(biāo)記完成后,正是回收垃圾對象。并發(fā)重置是指在垃圾回收完成后,重新初始化CMS數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù),為下一次垃圾回收做好準(zhǔn)備。
在整個CMS回收過程中,默認(rèn)情況下,在并發(fā)標(biāo)記之后,會有一個預(yù)清理的操作(也可以設(shè)置參數(shù)-XX:CMSPrecleaningEnabled,不進(jìn)行預(yù)清理)。預(yù)清理是并發(fā)的,除了為正式清理做準(zhǔn)備和檢查以外,預(yù)清理還會嘗試控制一次停頓時間。由于重新標(biāo)記是獨占CPU的,如果新生代GC發(fā)生后立即觸發(fā)一次重新標(biāo)記,那么一次停頓時間可能很長。為了避免這種情況,預(yù)清理時,會可以等待一次新生代GC的發(fā)生,然后根據(jù)歷史性能數(shù)據(jù)預(yù)測一下新生代GC可能發(fā)生的時間,然后在當(dāng)前時間和預(yù)測時間的中間時刻,進(jìn)行重新標(biāo)記。這樣,最大程度上避免新生代GC和重新標(biāo)記重合,盡可能減少一次停頓時間。
CMS主要參數(shù)設(shè)置
-XX:+UseConcMarkSweepGC啟用CMS回收器
-XX:ConcGCThreads 設(shè)置并發(fā)線程數(shù)量
-XX:CMSInitiatingOccupancyFraction 設(shè)置當(dāng)老年代使用率達(dá)到N時,執(zhí)行一次CMS回收。
-XX:+UseCMSCompactAtFullCollection CMS在垃圾收集完成后,進(jìn)行一次碎片整理。
-XX:CMSFullGCsBeforeCompaction 設(shè)置當(dāng)進(jìn)行N次CMS回收后進(jìn)行一次內(nèi)存壓縮。
-XX:+CMSClassUnloadingEnabled 使用CMS機制回收Perm區(qū)Class數(shù)據(jù)
相關(guān)文章
SpringBoot實現(xiàn)多個子域共享cookie的示例
本文主要介紹了SpringBoot實現(xiàn)多個子域共享cookie的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Java使用枚舉替代if/else和switch-case語句的實踐
在軟件開發(fā)中if-else和switch-case語句經(jīng)常被用來處理不同的條件分支,但在大型項目中,這種做法可能導(dǎo)致代碼可讀性差、維護(hù)困難,這篇文章主要給大家介紹了關(guān)于Java使用枚舉替代if/else和switch-case語句的相關(guān)資料,需要的朋友可以參考下2024-09-09深入了解Java數(shù)據(jù)結(jié)構(gòu)和算法之堆
這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之堆 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01Java使用jxl包寫Excel文件適合列寬實現(xiàn)
用jxl.jar包,讀寫過Excel文件。也沒有注意最適合列寬的問題,但是jxl.jar沒有提供最適合列寬的功能,上次用到寫了一下,可以基本實現(xiàn)最適合列寬。2013-11-11Spring+Vue整合UEditor富文本實現(xiàn)圖片附件上傳的方法
這篇文章主要介紹了Spring+Vue整合UEditor富文本實現(xiàn)圖片附件上傳的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07