最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析JVM垃圾回收的過程

 更新時(shí)間:2020年09月01日 10:57:50   作者:pinxiong  
這篇文章主要介紹了JVM垃圾回收的過程,幫助大家更好的理解和學(xué)習(xí)Java中的垃圾回收機(jī)制,感興趣的朋友可以了解下

JVM垃圾回收的算法很多,但是不管是哪種算法,在進(jìn)行GC時(shí)大致的流程都是差不多的,主要有以下3個(gè)過程:

1. 枚舉根節(jié)點(diǎn)

這個(gè)過程主要是找到所有的GC Roots對(duì)象,這些對(duì)象一般發(fā)生在JVM虛擬機(jī)棧棧幀、常量池中的靜態(tài)對(duì)象、方法區(qū)中靜態(tài)類屬性引用、本地方法棧中引用的對(duì)象。這個(gè)過程會(huì)發(fā)生STW,所有的線程均運(yùn)行到安全區(qū)域(Safe Region)才開始執(zhí)行。

通常有兩種算法:

  • 引用計(jì)數(shù)法:每個(gè)對(duì)象中添加一個(gè)引用計(jì)數(shù)器,每當(dāng)有一個(gè)地方引用它時(shí),計(jì)數(shù)器值就+1;當(dāng)引用失效時(shí),計(jì)數(shù)器值就-1;任何時(shí)刻計(jì)數(shù)器為0的對(duì)象就是不可能在被使用的。

優(yōu)點(diǎn)是效率高,缺點(diǎn)是循環(huán)引用無法處理,導(dǎo)致內(nèi)存溢出。

  • 可達(dá)性分析:以GC Roots為根節(jié)點(diǎn),從這些根節(jié)點(diǎn)開始向下搜索,搜索所走過的路徑稱為引用鏈(Reference Chain),當(dāng)一個(gè)對(duì)象不在任何引用鏈相連時(shí),則證明此對(duì)象是不可用的。

優(yōu)點(diǎn)可以檢測(cè)所有的對(duì)象,缺點(diǎn)效率低。

GC Roots節(jié)點(diǎn)一般為:

  • 虛擬機(jī)棧中棧幀引用的對(duì)象
  • 本地方法棧JNI中棧幀引用的對(duì)象
  • 常量池中引用的對(duì)象
  • 類中的靜態(tài)變量應(yīng)用的對(duì)象

2. 標(biāo)記

標(biāo)記的過程主要是標(biāo)記哪些對(duì)象是需要被回收的,有的GC算法是并行的,有的是和GC Roots標(biāo)記一起執(zhí)行。如果是并行的,不會(huì)發(fā)生STW。

如果是并發(fā)標(biāo)記的GC算法,后面還有有一次重新標(biāo)記或者最終標(biāo)記。這主要是來解決在并發(fā)標(biāo)記的過程中,用戶線程還在一直執(zhí)行,這期間有變化的對(duì)象。

標(biāo)記算法常見的有兩種:

  • 標(biāo)記–清除算法或者標(biāo)記–整理算法:為每個(gè)對(duì)象存儲(chǔ)一個(gè)標(biāo)記位,記錄對(duì)象的狀態(tài)(活著或是死亡)
  • 復(fù)制算法:將內(nèi)存平均分成兩部分,然后每次只使用其中的一部分,當(dāng)這部分內(nèi)存滿的時(shí)候,將內(nèi)存中所有存活的對(duì)象復(fù)制到另一個(gè)內(nèi)存中,然后將之前的內(nèi)存中死亡的對(duì)象清空。

3. 清除或回收

這個(gè)階段會(huì)根據(jù)GC算法的不同采取不同的回收策略。

  • CMS算法在回收的時(shí)候會(huì)考慮停頓時(shí)間,盡量減少GC線程占用的時(shí)間
  • G1算法先對(duì)各個(gè)Region的回收價(jià)值和成本進(jìn)行排序,根據(jù)用戶所期望的GC停頓時(shí)間來制定回收計(jì)劃
  • 標(biāo)記-清除算法在第二階段(清除階段)將對(duì)象回收
  • 復(fù)制算法是通過將存活對(duì)象復(fù)制到另一塊內(nèi)存區(qū)域,將當(dāng)前區(qū)域中未被復(fù)制的對(duì)象進(jìn)行清除

以上就是淺析JVM垃圾回收的過程的詳細(xì)內(nèi)容,更多關(guān)于JVM垃圾回收的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中使用注解獲取和改變Bean的指定變量值

    Java中使用注解獲取和改變Bean的指定變量值

    Java有時(shí)需要通過自定義注解,獲取某Bean的某變量的值,根據(jù)業(yè)務(wù)要求處理數(shù)據(jù),然后再把新值設(shè)置回Bean的同一變量中,這篇文章介紹了使用注解獲取和改變Bean變量值的過程,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • JS+Struts2多文件上傳實(shí)例詳解

    JS+Struts2多文件上傳實(shí)例詳解

    這篇文章主要為大家詳細(xì)介紹了JS+Struts2多文件上傳實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Java中如何獲取mysql連接的3種方法總結(jié)

    Java中如何獲取mysql連接的3種方法總結(jié)

    最近工作中需要用到mysql連接,發(fā)現(xiàn)實(shí)現(xiàn)的方法不止一個(gè),所以就來總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于Java中如何獲取mysql連接的3種方法,需要的朋友可以參考借鑒,感興趣的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • SpringBoot去除內(nèi)嵌tomcat的實(shí)現(xiàn)

    SpringBoot去除內(nèi)嵌tomcat的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot去除內(nèi)嵌tomcat的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • JAVA學(xué)習(xí)筆記:注釋、變量的聲明和定義操作實(shí)例分析

    JAVA學(xué)習(xí)筆記:注釋、變量的聲明和定義操作實(shí)例分析

    這篇文章主要介紹了JAVA學(xué)習(xí)筆記:注釋、變量的聲明和定義操作,結(jié)合實(shí)例形式分析了Java注釋、變量的聲明和定義相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • shiro 與 SpringMVC的整合完美示例

    shiro 與 SpringMVC的整合完美示例

    shiro可以直接和spring整合,但是這樣需要單獨(dú)配置spring用于整合shiro,在配置springmvc,接下來通過實(shí)例代碼給大家介紹shiro 整合 SpringMVC 的方法,感興趣的朋友一起看看吧
    2021-08-08
  • SpringBoot深入刨析數(shù)據(jù)層技術(shù)

    SpringBoot深入刨析數(shù)據(jù)層技術(shù)

    這篇文章主要介紹了SpringBoot數(shù)據(jù)層技術(shù)的解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Spring加載屬性文件方式(自動(dòng)加載優(yōu)先級(jí)問題)

    Spring加載屬性文件方式(自動(dòng)加載優(yōu)先級(jí)問題)

    這篇文章主要介紹了Spring加載屬性文件方式(自動(dòng)加載優(yōu)先級(jí)問題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 深入剖析Java工廠模式讓你的代碼更靈活

    深入剖析Java工廠模式讓你的代碼更靈活

    Java工廠模式是一種創(chuàng)建對(duì)象的設(shè)計(jì)模式,它可以在不暴露對(duì)象創(chuàng)建邏輯的情況下,將對(duì)象的創(chuàng)建委托給子類或者其他對(duì)象。本文就來深入剖析一下Java工廠模式是如何讓你的代碼更靈活、可擴(kuò)展、易維護(hù)的
    2023-05-05
  • Java讀寫.properties文件解決中文亂碼問題

    Java讀寫.properties文件解決中文亂碼問題

    這篇文章主要介紹了Java讀寫.properties文件解決中文亂碼問題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-11-11

最新評(píng)論

大理市| 吉木萨尔县| 蒙城县| 鹤山市| 连山| 德清县| 南丹县| 龙里县| 翁牛特旗| 来安县| 平度市| 甘孜县| 大新县| 德庆县| 清丰县| 高密市| 宁远县| 乌苏市| 平山县| 安康市| 蓬莱市| 内乡县| 大冶市| 武隆县| 广饶县| 辽阳市| 南京市| 新野县| 尚志市| 八宿县| 平度市| 环江| 仁布县| 腾冲县| 永福县| 衡山县| 蕲春县| 明星| 桂阳县| 扶余县| 巫山县|