下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——Java內(nèi)存回收相關(guān)知識(shí)Java內(nèi)存回收相關(guān)學(xué)識(shí)
Java的GC機(jī)制是自動(dòng)舉行的,和C語(yǔ)言有些識(shí)別需要程序員自己保證內(nèi)存的使用和回收。Java的內(nèi)存調(diào)配和回收也主要在Java的堆上舉行的,Java的堆中存儲(chǔ)了大量的對(duì)象實(shí)例,所以Java的堆也叫GC堆。以下僅供參考!
什么樣的內(nèi)存可以回收
判斷法1:引用計(jì)數(shù)
方法:每有一個(gè)引用指向這個(gè)對(duì)象,那么這個(gè)對(duì)象的引用計(jì)數(shù)+1,反之,每有一個(gè)引用變更了指向,那么他原來(lái)指向的對(duì)象引用計(jì)數(shù)-1,當(dāng)引用計(jì)數(shù)為0的時(shí)候,這個(gè)對(duì)象也就不成能被使用了那么就可以被回收了
問(wèn)題:可能會(huì)展現(xiàn)環(huán)狀的引用,導(dǎo)致不成能被使用的對(duì)象永遠(yuǎn)不成能被回收
例如:
ClassA
Aa;
PublicstaticvoidmainString[]args
Agc1=newA;
Agc2=newA;
Gc1.a=gc2;
Gc2.a=gc1;
Gc1=null;
Gc2=null;
Gc1和gc2都被設(shè)置成null了,他們都理應(yīng)被清理,但是由于gc1的.a對(duì)象指向gc2,gc2的a對(duì)象指向gc1,導(dǎo)致他們的引用計(jì)數(shù)永遠(yuǎn)為1,但是他們都永遠(yuǎn)不成能被使用了,所以這種方法存在漏洞
判斷2:可達(dá)性分析算法
方法:從一個(gè)叫做GCROOTS的節(jié)點(diǎn)啟程,全體能夠到達(dá)的引用對(duì)象標(biāo)記起來(lái),直到走到完全沒(méi)有引用的地方為止,這樣從這個(gè)節(jié)點(diǎn)連起來(lái)的全體的點(diǎn)(引用鏈),構(gòu)成的路線就是不成回收的,那么全體沒(méi)有被到達(dá)過(guò)的對(duì)象均可以被回收
什么可以做GCROOTS:虛擬機(jī)棧(棧幀中的本地變量表)中的引用的對(duì)象、方法區(qū)中類靜態(tài)屬性引用的對(duì)象、方法區(qū)中常量引用的對(duì)象、本地方法棧中JNI引用的對(duì)象
這些對(duì)象的特點(diǎn):不成變并且隨時(shí)可能被用到,生命周期長(zhǎng)
補(bǔ)充:可達(dá)性分析的算法,那么沒(méi)有在引用鏈上的對(duì)象都確定會(huì)被清理嗎?不確定。當(dāng)運(yùn)行可達(dá)性分析的算法之后,會(huì)對(duì)全體沒(méi)有在引用鏈上的對(duì)象舉行一次標(biāo)記和篩選,篩選的條件為:該對(duì)象籠罩了finallize()方法(這個(gè)方法是GC的時(shí)候假設(shè)這個(gè)對(duì)象要被回收那么執(zhí)行的方法,但是在Thinkinginjava中不推舉用來(lái)處理收尾工作),并且這個(gè)方法沒(méi)有被執(zhí)行過(guò),那么就會(huì)把這個(gè)對(duì)象放到一個(gè)低優(yōu)先級(jí)隊(duì)列中執(zhí)行,也就是這個(gè)對(duì)象的結(jié)果搶救的機(jī)遇,假設(shè)這個(gè)時(shí)候這個(gè)對(duì)象把自己和在引用鏈上的引用連了起來(lái),那么他在執(zhí)行完finallize方法之后,再次判斷時(shí)就不會(huì)被清理,否那么會(huì)在其次次可達(dá)性判斷的時(shí)候直接清理(由于finallize已經(jīng)執(zhí)行過(guò)一次了),假設(shè)沒(méi)有籠罩這個(gè)方法,那么對(duì)不起,再見
回收算法介紹:
回收算法1:標(biāo)記清理(Mark——sweep)算法
標(biāo)記全體需要回收對(duì)象,然后將他們清理回收
問(wèn)題:會(huì)產(chǎn)生內(nèi)存碎片
優(yōu)點(diǎn):不需要暫停全體線程(Stoptheworld)
回收算法2:復(fù)制
標(biāo)記后,將全體不需要回收的對(duì)象全部復(fù)制到一個(gè)空的內(nèi)存中,然后清理剛剛使用的內(nèi)存塊
問(wèn)題:濫用資源,會(huì)有一些內(nèi)存堆無(wú)法被使用
解決:用在新生代,新生代會(huì)有80%以上的對(duì)象經(jīng)過(guò)一次GC就會(huì)死亡,因此采用Eden+Survivor*2的手段,Eden=8*Survivor大?。℉otSpot默認(rèn)),那么每次使用一個(gè)Eden+一個(gè)Survivor,然后舉行復(fù)制清理的時(shí)候,清理Eden+Survivor中,然后將可用的對(duì)象復(fù)制到空閑的Survivor中,然后全部清空前面的使用區(qū),然后使用Eden和復(fù)制到的Survivor
又一個(gè)問(wèn)題:假設(shè)Survivor不夠怎么辦?向老年頭借空間,叫做調(diào)配擔(dān)保,不夠存放的對(duì)象會(huì)通過(guò)調(diào)配擔(dān)保進(jìn)入老年頭
問(wèn)題:需要stoptheworld
回收算法3:標(biāo)記整理(Mark——compact)
標(biāo)記后,將可用內(nèi)存向一側(cè)擺放,然后清理掉可用內(nèi)存邊緣外部的全體內(nèi)存區(qū)域
優(yōu)點(diǎn):沒(méi)有內(nèi)存碎片的問(wèn)題
問(wèn)題:需要stoptheworld
回收算法4:分代收集
將堆分代(老年頭、新生代),老年頭采用標(biāo)記整理、標(biāo)記清理等方法,新生代采用復(fù)制方法。
為什么:由于老年頭大片面對(duì)象是可用的,因此假設(shè)采用復(fù)制算法,雖然沒(méi)有內(nèi)存碎片,但是空間濫用大,而且大片面對(duì)象沒(méi)有變化,而在新生代使用復(fù)制算法,可以犧牲很小的內(nèi)存空間就獲得較好的效率
HotSpot中內(nèi)存回收算法
枚舉根節(jié)點(diǎn)(GCROOTs)
Java虛擬機(jī)采用切實(shí)式GC,有一個(gè)OOPmap來(lái)標(biāo)記哪個(gè)位置有個(gè)對(duì)象,這樣在查找引用鏈的時(shí)候可以較快的找齊全體的引用鏈
Safepoint
在OOPmap的輔助下,這個(gè)可以快速且切實(shí)的完成枚舉,但是問(wèn)題就是導(dǎo)致這個(gè)oopmap變化的指令分外多,假設(shè)為每一條指令生成oopmap,那么會(huì)需要大量額外空間,因此采用在特定點(diǎn)的地方生成,這些點(diǎn)同時(shí)也是safepoint的點(diǎn),那么當(dāng)需要枚舉根節(jié)點(diǎn)的時(shí)候,就讓線程運(yùn)行到這個(gè)地方再中斷。
一種方法:先中斷全體線程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年蘇州高博軟件技術(shù)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案詳解一套
- 2026年成都農(nóng)業(yè)科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案詳解1套
- 稅務(wù)今日面試題及答案
- 基于循證的慢性阻寒性肺疾病患者護(hù)理
- 2025~2026學(xué)年濟(jì)南天橋區(qū)濼口實(shí)驗(yàn)學(xué)校九年級(jí)上學(xué)期12月份數(shù)學(xué)考試試卷以及答案
- 2025年大慶市中醫(yī)醫(yī)院招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 家電行業(yè)市場(chǎng)前景及投資研究報(bào)告:雙11家電品類消費(fèi)者趨勢(shì)
- 2025年陸軍軍醫(yī)大學(xué)西南醫(yī)院護(hù)士長(zhǎng)招聘?jìng)淇碱}庫(kù)及1套參考答案詳解
- 2025年江西省鷹潭產(chǎn)融私募基金管理有限公司投資經(jīng)理招聘?jìng)淇碱}庫(kù)及一套完整答案詳解
- 2025年三明地區(qū)備考題庫(kù)編內(nèi)招聘24人備考題庫(kù)及參考答案詳解一套
- 危險(xiǎn)廢物安全措施課件
- 形勢(shì)與政策(吉林大學(xué))單元測(cè)試(第11-25章)
- 2025版寄生蟲病癥狀解析與護(hù)理方法探討
- 留置看護(hù)業(yè)務(wù)知識(shí)培訓(xùn)班課件
- 2025年國(guó)家開放大學(xué)(電大)《物理化學(xué)》期末考試備考題庫(kù)及答案解析
- 無(wú)領(lǐng)導(dǎo)小組討論面試技巧與實(shí)戰(zhàn)案例
- 2025年及未來(lái)5年中國(guó)養(yǎng)老產(chǎn)業(yè)行業(yè)發(fā)展趨勢(shì)預(yù)測(cè)及投資規(guī)劃研究報(bào)告
- 2025年中國(guó)辦公樓租戶調(diào)查分析報(bào)告
- 環(huán)保設(shè)備銷售培訓(xùn)
- 髖臼骨折的護(hù)理課件
- 國(guó)際中文教育概論 課件 第12章 國(guó)際中文教育前瞻
評(píng)論
0/150
提交評(píng)論