JVM垃圾回收

回收方法

  1. 引用計(jì)數(shù)算法:
    給對(duì)象中添加一個(gè)引用計(jì)數(shù)器浩村,每當(dāng)有一個(gè)地方引用它時(shí)露戒,計(jì)數(shù)器+1,當(dāng)引用失效白嘁,計(jì)數(shù)器-1.任何時(shí)刻計(jì)數(shù)器為0的對(duì)象就是不可能再被使用的坑鱼。
  • 優(yōu)點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,判定效率高效权薯,被actionscript3和python中廣泛應(yīng)用姑躲。
  • 缺點(diǎn):無法解決對(duì)象之間的相互引用問題。java沒有采納
  1. 可達(dá)性分析算法:

通過一系列稱為“GC Roots”的對(duì)象作為起始點(diǎn)盟蚣,從這些節(jié)點(diǎn)開始向下搜索黍析,搜索所走過的路徑稱為引用鏈,當(dāng)一個(gè)對(duì)象到GCRoots沒有任何引用鏈相連的時(shí)候屎开,則證明此對(duì)象是不可用的阐枣。
比如如下,右側(cè)的對(duì)象是到GCRoot時(shí)不可達(dá)的奄抽,可以判定為可回收對(duì)象蔼两。


image.png

回收依據(jù)

在java中,可以作為GCRoot的對(duì)象包括以下幾種:

  • 虛擬機(jī)棧中引用的對(duì)象逞度。
  • 方法區(qū)中靜態(tài)屬性引用的對(duì)象额划。
  • 方法區(qū)中常量引用的對(duì)象。
  • 本地方法中JNI引用的對(duì)象档泽。

那么是不是這些對(duì)象就非死不可俊戳,也不一定,此時(shí)只能宣判它們存在于一種“緩刑”的階段馆匿,要真正的宣告一個(gè)對(duì)象死亡抑胎。至少要經(jīng)歷兩次標(biāo)記:第一次:對(duì)象可達(dá)性分析之后,發(fā)現(xiàn)沒有與GCRoots相連接渐北,此時(shí)會(huì)被第一次標(biāo)記并篩選阿逃。第二次:對(duì)象沒有覆蓋finalize()方法,或者finalize()方法已經(jīng)被虛擬機(jī)調(diào)用過赃蛛,此時(shí)會(huì)被認(rèn)定為沒必要執(zhí)行恃锉。

如何回收

  1. 標(biāo)記清除法(Mark-Sweep)
    標(biāo)記清除法是垃圾回收算法的思想基礎(chǔ)。標(biāo)記清除算法將垃圾分為兩個(gè)階段:標(biāo)記階段和清除階段呕臂。
    標(biāo)記階段淡喜,通過根節(jié)點(diǎn),標(biāo)記所有從根節(jié)點(diǎn)開始的可達(dá)對(duì)象诵闭,未標(biāo)記過的對(duì)象就是未被引用的垃圾對(duì)象。
    清除階段,清除所有未被標(biāo)記的對(duì)象疏尿。


    image.png
  1. 復(fù)制算法(Copying)
    復(fù)制算法是瘟芝,將原有的內(nèi)存空間分為兩塊,每次只使用其中一塊褥琐,在垃圾回收時(shí)锌俱,將正在適用的內(nèi)存中存活對(duì)象復(fù)制到未使用的內(nèi)存塊,然后清除使用的內(nèi)存塊中所有的對(duì)象敌呈。


    image.png
  1. 標(biāo)記壓縮算法(Mark-Compact)
    標(biāo)記壓縮算法是一種老年代的回收算法贸宏。
    標(biāo)記階段和標(biāo)記清除算法一致,對(duì)可達(dá)對(duì)象做一次標(biāo)記磕洪。
    清理階段吭练,為了避免內(nèi)存碎片產(chǎn)生,將所有的存活對(duì)象壓縮到內(nèi)存的一端析显。


    image.png
  1. 分代收集算法
    GC分代的基本假設(shè):絕大部分對(duì)象的生命周期都非常短暫鲫咽,存活時(shí)間短。
    “分代收集”(Generational Collection)算法谷异,把Java堆分為新生代和老年代分尸,這樣就可以根據(jù)各個(gè)年代的特點(diǎn)采用最適當(dāng)?shù)氖占惴āT谛律写踵冢看卫占瘯r(shí)都發(fā)現(xiàn)有大批對(duì)象死去箩绍,只有少量存活,那就選用復(fù)制算法尺上,只需要付出少量存活對(duì)象的復(fù)制成本就可以完成收集材蛛。而老年代中因?yàn)閷?duì)象存活率高、沒有額外空間對(duì)它進(jìn)行分配擔(dān)保尖昏,就必須使用“標(biāo)記-清理”或“標(biāo)記-整理”算法來進(jìn)行回收仰税。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市抽诉,隨后出現(xiàn)的幾起案子陨簇,更是在濱河造成了極大的恐慌,老刑警劉巖迹淌,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件河绽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡唉窃,警方通過查閱死者的電腦和手機(jī)耙饰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纹份,“玉大人苟跪,你說我怎么就攤上這事廷痘。” “怎么了件已?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵笋额,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我篷扩,道長(zhǎng)兄猩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任鉴未,我火速辦了婚禮枢冤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铜秆。我一直安慰自己淹真,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布羽峰。 她就那樣靜靜地躺著趟咆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪梅屉。 梳的紋絲不亂的頭發(fā)上值纱,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音坯汤,去河邊找鬼虐唠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惰聂,可吹牛的內(nèi)容都是我干的疆偿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼搓幌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼杆故!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起溉愁,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤处铛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后拐揭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撤蟆,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年堂污,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了家肯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盟猖,死狀恐怖讨衣,靈堂內(nèi)的尸體忽然破棺而出换棚,到底是詐尸還是另有隱情,我是刑警寧澤反镇,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布圃泡,位于F島的核電站,受9級(jí)特大地震影響愿险,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜价说,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一辆亏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鳖目,春花似錦扮叨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至狸捅,卻和暖如春衷蜓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尘喝。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國(guó)打工磁浇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朽褪。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓置吓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缔赠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衍锚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345