欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡單分析java中CMS回收器

 更新時(shí)間:2018年10月09日 11:33:38   投稿:laozhang  
在本篇文章里我們給大家分享了關(guān)于java中CMS回收器的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。

CMS(Concurrent Mark Sweep)回收器

它使用的是標(biāo)記清除算法,同時(shí)又是一個(gè)使用多線程并行回收的垃圾回收器。

CMS主要工作步驟

CMS工作時(shí)主要步驟有初始標(biāo)記、并發(fā)標(biāo)記、預(yù)清理、重新標(biāo)記、并發(fā)清除和并發(fā)重置。其中初始標(biāo)記和重新標(biāo)記是獨(dú)占系統(tǒng)資源的,而預(yù)清理、并發(fā)標(biāo)記、并發(fā)清除和并發(fā)重置是可以和用戶線程一起執(zhí)行的。因此它可以在應(yīng)用程序運(yùn)行過程中進(jìn)行垃圾回收。

根據(jù)標(biāo)記清除算法,初始標(biāo)記、并發(fā)標(biāo)記和重新標(biāo)記都是為了標(biāo)記出需要回收的對(duì)象。并發(fā)清理則是在標(biāo)記完成后,正是回收垃圾對(duì)象。并發(fā)重置是指在垃圾回收完成后,重新初始化CMS數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù),為下一次垃圾回收做好準(zhǔn)備。

在整個(gè)CMS回收過程中,默認(rèn)情況下,在并發(fā)標(biāo)記之后,會(huì)有一個(gè)預(yù)清理的操作(也可以設(shè)置參數(shù)-XX:CMSPrecleaningEnabled,不進(jìn)行預(yù)清理)。預(yù)清理是并發(fā)的,除了為正式清理做準(zhǔn)備和檢查以外,預(yù)清理還會(huì)嘗試控制一次停頓時(shí)間。由于重新標(biāo)記是獨(dú)占CPU的,如果新生代GC發(fā)生后立即觸發(fā)一次重新標(biāo)記,那么一次停頓時(shí)間可能很長。為了避免這種情況,預(yù)清理時(shí),會(huì)可以等待一次新生代GC的發(fā)生,然后根據(jù)歷史性能數(shù)據(jù)預(yù)測一下新生代GC可能發(fā)生的時(shí)間,然后在當(dāng)前時(shí)間和預(yù)測時(shí)間的中間時(shí)刻,進(jìn)行重新標(biāo)記。這樣,最大程度上避免新生代GC和重新標(biāo)記重合,盡可能減少一次停頓時(shí)間。

CMS主要參數(shù)設(shè)置

-XX:+UseConcMarkSweepGC啟用CMS回收器

-XX:ConcGCThreads 設(shè)置并發(fā)線程數(shù)量

-XX:CMSInitiatingOccupancyFraction 設(shè)置當(dāng)老年代使用率達(dá)到N時(shí),執(zhí)行一次CMS回收。

-XX:+UseCMSCompactAtFullCollection CMS在垃圾收集完成后,進(jìn)行一次碎片整理。

-XX:CMSFullGCsBeforeCompaction 設(shè)置當(dāng)進(jìn)行N次CMS回收后進(jìn)行一次內(nèi)存壓縮。

-XX:+CMSClassUnloadingEnabled 使用CMS機(jī)制回收Perm區(qū)Class數(shù)據(jù)

相關(guān)文章

  • Java實(shí)現(xiàn)簡單修改文件名的方法分析

    Java實(shí)現(xiàn)簡單修改文件名的方法分析

    這篇文章主要介紹了Java實(shí)現(xiàn)簡單修改文件名的方法,結(jié)合具體實(shí)例分析了2種比較常用的java文件名修改方法,需要的朋友可以參考下
    2017-09-09
  • SpringBoot實(shí)現(xiàn)多個(gè)子域共享cookie的示例

    SpringBoot實(shí)現(xiàn)多個(gè)子域共享cookie的示例

    本文主要介紹了SpringBoot實(shí)現(xiàn)多個(gè)子域共享cookie的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java使用枚舉替代if/else和switch-case語句的實(shí)踐

    Java使用枚舉替代if/else和switch-case語句的實(shí)踐

    在軟件開發(fā)中if-else和switch-case語句經(jīng)常被用來處理不同的條件分支,但在大型項(xià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)和算法之堆

    這篇文章主要為大家介紹了Java數(shù)據(jù)結(jié)構(gòu)和算法之堆 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • java實(shí)現(xiàn)PPT轉(zhuǎn)化為PDF

    java實(shí)現(xiàn)PPT轉(zhuǎn)化為PDF

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)PPT轉(zhuǎn)化為PDF的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • java如何實(shí)現(xiàn)數(shù)位分離

    java如何實(shí)現(xiàn)數(shù)位分離

    這篇文章主要介紹了java如何實(shí)現(xiàn)數(shù)位分離,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java?Base64?加密與解密示例代碼

    Java?Base64?加密與解密示例代碼

    基本的加密盡量保持簡單,加密輸入字符串沒有增加任何換行符。輸出被映射到“A-Za-z0-9+/”字符集中,解密從該字符集中解析為任意字符,這篇文章主要介紹了Java?Base64?加密與解密,需要的朋友可以參考下
    2022-12-12
  • Java使用jxl包寫Excel文件適合列寬實(shí)現(xiàn)

    Java使用jxl包寫Excel文件適合列寬實(shí)現(xiàn)

    用jxl.jar包,讀寫過Excel文件。也沒有注意最適合列寬的問題,但是jxl.jar沒有提供最適合列寬的功能,上次用到寫了一下,可以基本實(shí)現(xiàn)最適合列寬。
    2013-11-11
  • 如何設(shè)置Spring Boot測試時(shí)的日志級(jí)別

    如何設(shè)置Spring Boot測試時(shí)的日志級(jí)別

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。下面我們來一起學(xué)習(xí)一下吧
    2019-06-06
  • Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法

    Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法

    這篇文章主要介紹了Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評(píng)論