目錄
引用計數(shù)算法
什么是引用
可達(dá)性分析算法(用的最多的)
引用計數(shù)算法
定義:在對象中添加一個引用計數(shù)器,每當(dāng)有一個地方引用它時,計數(shù)器值就加一;當(dāng)引用失效時,計數(shù)器值就減一;任何時刻計數(shù)器為零的對象就是不可能再被使用的。
但是不能解決循環(huán)引用的問題,A引用B,B引用A,這個對象的引用計數(shù)就不可能為0.這兩個對象不會被別的任何對象引用,卻不會被回收
什么是引用
?對象引用的四個等級:
為什么說要有這個設(shè)置:為了滿足當(dāng)內(nèi)存空間還足夠時,能保留在內(nèi)存之中,如果內(nèi)存空間在進(jìn)行垃圾收集后仍然非常緊張,那就可以拋棄這些對象。
- 強(qiáng)引用:new Object(),只有當(dāng)判斷對象已經(jīng)死的時候,才回收
- 軟引用:在系統(tǒng)要發(fā)生oom,會回收所有的軟引用對象,如果回收完,還是放不上這個對象,才溢出。,每次垃圾回收的時候,如果對象還沒死,就不回收,但是在oom之前,不管有沒有死,都會被回收。系統(tǒng)要發(fā)生oom,會回收所有的軟引用對象,如果回收完,還是放不上這個對象,才溢出。
- 弱引用:在每次垃圾回收的時候,不管有沒有引用,都會被回收。
- 虛引用:相當(dāng)于什么時候回收都沒問題,也無法通過虛引用來取得一個對象實例。為一個對象設(shè)置虛引用關(guān)聯(lián)的唯一目的只是為了能在這個對象被收集器回收時收到一個系統(tǒng)通知
可達(dá)性分析算法(用的最多的)
當(dāng)這個對象,與GCROOT對象沒有關(guān)聯(lián)的時候,就認(rèn)為這個對象已經(jīng)死亡了。GCROOT包括四類:兩個棧兩個方法區(qū)。(比如User對象在棧中有關(guān)聯(lián),或者說這個對象在方法區(qū)中有static用著他)文章來源:http://www.zghlxwxcb.cn/news/detail-657719.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-657719.html
到了這里,關(guān)于JVM---理解jvm之對象已死怎么判斷?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!