欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂淺談關(guān)于Java如何判定內(nèi)存中的垃圾

2018-01-02 11:27:55 1226瀏覽

        今天扣丁學(xué)堂給大家介紹一下關(guān)于Java如何判定內(nèi)存中的垃圾介紹,下面我們一起來看一下吧。


扣丁學(xué)堂淺談關(guān)于Java如何判定內(nèi)存中的垃圾


        1、引用計數(shù)器算法

        解釋:系統(tǒng)給每個對象添加一個引用計數(shù)器,每當(dāng)有一個地方引用這個對象的時候,計數(shù)器就加1,當(dāng)引用失效的時候,計數(shù)器就減1,在任何一個時刻計數(shù)器為0的對象就是不可能被使用的對象,因為沒有任何地方持有這個引用,這時這個對象就被視為內(nèi)存垃圾,等待被虛擬機回收。

        優(yōu)點:客觀的說,引用計數(shù)器算法,他的實現(xiàn)很簡單,判定的效率很高,在大部分情況下這都是相當(dāng)不錯的算法,其實,很多案例中都使用了這種算法,比如IOS的Object-C,微軟的COM技術(shù)(用于給window開發(fā)驅(qū)動,.net里面的技術(shù)幾乎都是建立在COM上的),Python語言等。

        缺陷:無法解決循環(huán)引用的問題。這就好像是懸崖邊的人采集草藥的人,想要活下去就必須要有一根繩子綁在懸崖上.如果有兩個人,甲的手拉著懸崖,乙的手拉著甲,那么這兩個人都能活,但是,如果甲的手拉著乙,乙的手也拉著甲,雖然這兩個人都認為自己被別人拉著,但是一樣會掉下懸崖.

        比如說A對象的一個屬性引用B,B對象的一個屬性同時引用AA.b=B()B.a=A();這個A,B對象的計數(shù)器都是1,可是,如果沒有其他任何地方引用A,B對象的時候,A,B對象其實在系統(tǒng)中是無法發(fā)揮任何作用的,既然無法發(fā)揮作用,那就應(yīng)該被視作內(nèi)存垃圾予以清理掉,可是因為此時A,B的計數(shù)器的值都是1,虛擬機就無法回收A,B對象,這樣就會造成內(nèi)存浪費,這在計算機系統(tǒng)中是不可容忍的.

        解決辦法:在語言層面處理,例如Object-C就使用強弱引用類型來解決問題.強引用計數(shù)器加1,弱引用不增加Java中也有強弱引用

        2、可達性分析算法

        解釋:這種算法通過一系列成為"GCRoots"的對象作為起始點,從這些節(jié)點開始向下搜索所有走過的路徑成為引用鏈(ReferenceChain),當(dāng)一個對象GCRoots沒有任何引用鏈相連(用圖論的話來說就是從GCRoots到這個對象不可達),則證明此對象是不可用的

        優(yōu)點

        這個算法可以輕松的解決循環(huán)引用的問題

        大部分的主流java虛擬機使用的都是這種算法

        Java語言中的GCRoots

        在虛擬機棧(其實是棧幀中的本地變量表)中引用的對象

        在方法區(qū)中的類靜態(tài)屬性引用對象
        
        在方法區(qū)中的常量引用的對象

        在本地方法棧中JNI(即一般說的Native方法)的引用對象

        好了,關(guān)于Java如何判定內(nèi)存中的垃圾就為大家簡單介紹到這里,想要學(xué)習(xí)Java開發(fā)的小伙伴可以選擇口碑良好的扣丁學(xué)堂學(xué)習(xí),扣丁學(xué)堂不僅有專業(yè)的老師和與時俱進的Java培訓(xùn)課程體系,還有大量的Java視頻教程供學(xué)員觀看學(xué)習(xí),喜歡的小伙伴抓緊時間行動吧。Java技術(shù)交流群:670348138。




扣丁學(xué)堂微信公眾號



【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】



查看更多關(guān)于“Java開發(fā)資訊的相關(guān)文章>>

標(biāo)簽: JavaEE視頻教程 JavaEE培訓(xùn) JavaEE開發(fā)工程師 Java培訓(xùn)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部