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

JVM中判定對象需要回收的方法

 更新時間:2022年04月19日 16:41:40   作者:毛毛的貓毛  
這篇文章主要介紹了jvm中如何判定對象需要回收,jvm在確定是否回收的對象的時候采用的是root搜索算法來實現(xiàn),需要的朋友可以參考下

引用計數(shù)法

每個對象上都有一個引用計數(shù),對象每被引用一次,引用計數(shù)器就+1,對象引用被釋放,引用計數(shù)器-1,直到對象的引用計數(shù)為0,對象就標(biāo)識可以回收

這個可以用數(shù)據(jù)算法中的圖形表示,對象A-對象B-對象C 都有引用,所以不會被回收,對象B由于沒有被引用,沒有路徑可以達(dá)到對象B,對象B的引用計數(shù)就就是0,對象B就會被回收。

但是這個算法有明顯的缺陷,對于循環(huán)引用的情況下,循環(huán)引用的對象就不會被回收。例如下圖:對象A,對象B 循環(huán)引用,沒有其他的對象引用A和B,則A和B 都不會被回收。

root搜索算法

這種算法目前定義了幾個root,也就是這幾個對象是jvm虛擬機(jī)不會被回收的對象,所以這些對象引用的對象都是在使用中的對象,這些對象未使用的對象就是即將要被回收的對象。簡單就是說:如果對象能夠達(dá)到root,就不會被回收,如果對象不能夠達(dá)到root,就會被回收。

被啟動類(bootstrap加載器)加載的類和創(chuàng)建的對象
jvm運行時方法區(qū)類靜態(tài)變量(static)引用的對象
jvm運行時方法去常量池引用的對象
jvm當(dāng)前運行線程中的虛擬機(jī)棧變量表引用的對象
本地方法棧中(jni)引用的對象

jvm在確定是否回收的對象的時候采用的是root搜索算法來實現(xiàn)。

補(bǔ)充:jvm判斷對象的回收

可達(dá)性分析算法

可達(dá)性分析算法:通過一系列“GC Roots”的根對象作為起始節(jié)點集,根據(jù)引用關(guān)系向下搜索,若某個對象到根對象無任何引用鏈相連,則此對象不可達(dá)。

但是可達(dá)性分析后為不可達(dá)的對象不是一定要回收,會經(jīng)歷一個二次標(biāo)記過程。

二次標(biāo)記

1.如果對象在可達(dá)性分析后結(jié)果為不可達(dá),則會被第一次標(biāo)記。接著進(jìn)行篩選,篩選條件為是否執(zhí)行finalize()方法。

  • 若該對象未覆蓋finalize()方法,或finalize()已被調(diào)用過一次,則不需要執(zhí)行finalize()方法。那么此對象判定為需要回收。

(對象的 finalize()方法只會被系統(tǒng)調(diào)用一次,下次回收該對象時, finalize()不會再執(zhí)行)

  • 若該對象覆蓋了finalize()方法,且finalize()方法未被調(diào)用過,則需要執(zhí)行finalize()方法。

2.若該對象需要執(zhí)行finalize()方法,則該對象會被放置在一個F-Queue的隊列中,再由一個finalizer線程執(zhí)行這些對象的finalize()方法。

3.接著收集器會堆F-Queue隊列的對象進(jìn)行二次標(biāo)記,若對象在finalize() 方法中未能逃脫,那么該對象會被二次標(biāo)記,二次標(biāo)記的對象判定為需要回收;

(對象可以在 finalize()方法中,將自己和引用鏈上的對象建立引用關(guān)系,這樣在第二次標(biāo)記時,收集器會將其移出回收對象的集合,以此達(dá)到逃脫)

到此這篇關(guān)于jvm中如何判定對象需要回收的文章就介紹到這了,更多相關(guān)jvm判斷對象回收內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JVM內(nèi)存結(jié)構(gòu)相關(guān)知識解析

    JVM內(nèi)存結(jié)構(gòu)相關(guān)知識解析

    這篇文章主要介紹了JVM內(nèi)存結(jié)構(gòu)相關(guān)知識解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • spring?boot權(quán)限管理的幾種常見方式

    spring?boot權(quán)限管理的幾種常見方式

    這篇文章主要給大家介紹了關(guān)于spring?boot權(quán)限管理的幾種常見方式,在Web應(yīng)用程序中,用戶權(quán)限管理是至關(guān)重要的,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 在SpringBoot中使用lombok的注意事項

    在SpringBoot中使用lombok的注意事項

    這篇文章主要介紹了在SpringBoot中使用lombok的注意事項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • sharding-jdbc5.0.0實現(xiàn)分表實踐

    sharding-jdbc5.0.0實現(xiàn)分表實踐

    本文主要介紹了sharding-jdbc5.0.0分表實踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java IO學(xué)習(xí)之緩沖輸入流(BufferedInputStream)

    Java IO學(xué)習(xí)之緩沖輸入流(BufferedInputStream)

    這篇文章主要介紹了Java IO學(xué)習(xí)之緩沖輸入流(BufferedInputStream)的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java實現(xiàn)班級管理系統(tǒng)

    Java實現(xiàn)班級管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)班級管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • eclipse輸出Hello World的實現(xiàn)方法

    eclipse輸出Hello World的實現(xiàn)方法

    這篇文章主要介紹了eclipse輸出Hello World的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • java多線程并發(fā)executorservice(任務(wù)調(diào)度)類

    java多線程并發(fā)executorservice(任務(wù)調(diào)度)類

    這篇文章主要介紹了線程并發(fā)ScheduledExecutorService類,設(shè)置 ScheduledExecutorService ,2秒后,在 1 分鐘內(nèi)每 10 秒鐘蜂鳴一次
    2014-01-01
  • SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能

    SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能

    Elasticsearch是一個開源的分布式搜索和分析引擎,它被設(shè)計用于處理大規(guī)模數(shù)據(jù)集,它提供了一個分布式多用戶能力的全文搜索引擎,本文將給大家介紹SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能,需要的朋友可以參考下
    2024-02-02
  • Flyway詳解及Springboot集成Flyway的詳細(xì)教程

    Flyway詳解及Springboot集成Flyway的詳細(xì)教程

    Flayway是一款數(shù)據(jù)庫版本控制管理工具,,支持?jǐn)?shù)據(jù)庫版本自動升級,Migrations可以寫成sql腳本,也可以寫在java代碼里。這篇文章主要介紹了Flyway詳解及Springboot集成Flyway的詳細(xì)教程的相關(guān)資料,需要的朋友可以參考下
    2020-07-07

最新評論

集贤县| 石屏县| 吉木萨尔县| 湖南省| 灵璧县| 隆化县| 邛崃市| 文化| 茌平县| 绥芬河市| 芦溪县| 景谷| 延寿县| 长兴县| 新营市| 鹰潭市| 绍兴县| 怀安县| 靖宇县| 噶尔县| 丰原市| 靖安县| 女性| 额济纳旗| 旌德县| 乌拉特中旗| 灵川县| 中牟县| 方正县| 瓮安县| 吉安市| 喀喇沁旗| 朝阳县| 平山县| 白银市| 三穗县| 南靖县| 钟山县| 盘山县| 曲水县| 海安县|