JVM ?GC(垃圾收集)機(jī)制

垃圾收集機(jī)制

  • 需要被收集的垃圾: 1.沒有引用指向的對象。2.兩個對象互相引用诲祸,且沒有外部引用指向他們。3. 多個對象環(huán)形引用而昨,形成一個閉環(huán)救氯,且沒有外部引用指向他們。
  • 回收規(guī)則: 正向可達(dá) 算法歌憨。從roots對象計算可以到達(dá)的對象都不是垃圾着憨。root對象舉例:main方法中的創(chuàng)建的所有對象;java虛擬機(jī)啟動時的ClassLoader躺孝。
  • 垃圾收集算法:
    • Mark-Sweep 標(biāo)記算法:沒有被引用的對象一一標(biāo)記出來享扔,GC運(yùn)行時進(jìn)行清除。缺點(diǎn):清除后內(nèi)存不連續(xù)植袍、碎片化惧眠。 空和不空的內(nèi)存塊互相間隔著,若有一個比較大的對象進(jìn)入時于个,有可能找不到可以存下它的連續(xù)整塊內(nèi)存氛魁。這時會觸發(fā)fullGC,全部回收厅篓,壓縮秀存,再存下新對象。影響效率羽氮。
    • Copying 復(fù)制算法:內(nèi)存被平成兩個連續(xù)的區(qū)域或链。永遠(yuǎn)有一個內(nèi)存區(qū)是空著的,回收被使用的一塊內(nèi)存時档押,直接把存活對象全部拷貝到空著的一塊內(nèi)存區(qū)中澳盐,并清空本內(nèi)存區(qū)祈纯。內(nèi)存復(fù)制的效率很高,并保證了內(nèi)存塊的連續(xù)性叼耙。缺點(diǎn):內(nèi)存浪費(fèi)腕窥,永遠(yuǎn)只能用一半。

      java堆內(nèi)存的 新生代 中垃圾收集時用的是復(fù)制算法筛婉。新生代分成了三塊內(nèi)存區(qū):Eden簇爆、 Survivor0、Survivor1爽撒。GC運(yùn)行時按正向可達(dá)規(guī)則將Eden中存活對象復(fù)制到S0內(nèi)存塊中入蛆,并清除當(dāng)前內(nèi)存塊,下一次GC時匆浙,將S0和Eden中存活的對象復(fù)制到S1中安寺,清除Eden和S0,如此往復(fù)首尼。內(nèi)存大小比例為8:1 : 1挑庶。 因為對象創(chuàng)建時最初存放于eden 而90%以上的對象往往在方法結(jié)束后被回收,留下的很少软能,故S0和S1比例可遠(yuǎn)小于Eden迎捺。 ps:堆內(nèi)存的性能優(yōu)化方式可參考:

    • Mark-Compact 標(biāo)記壓縮 被標(biāo)記的對象回收后,把存活對象壓縮到一起查排,留下連續(xù)的內(nèi)存塊凳枝。缺點(diǎn):效率低于copy算法

      java堆內(nèi)存的 老年代 中垃圾收集時一般用的是標(biāo)記壓縮法。老年代中新產(chǎn)生的垃圾較少跋核,但是堆積的垃圾可能很多岖瑰,故標(biāo)記壓縮的在該內(nèi)存塊下效率不會太低,也保證了內(nèi)存空間不浪費(fèi)砂代。

  • 引用的類型: 強(qiáng)引用蹋订;軟引用;弱引用刻伊;虛引用露戒。
    • 經(jīng)常使用的String a = new String("abc") 都為強(qiáng)引用,即使內(nèi)存不夠時捶箱,只要引用存在智什,都不會被清除,此時就報OutOfMemory丁屎。
    • 軟引用 SoftReference<Bitmap> softBitmap = new SoftReference<Bitmap>(); 該引用在內(nèi)存不夠的情況下會被強(qiáng)制清除荠锭。如在讀取大量圖片的應(yīng)用場景中,如果每次讀取圖片都從硬盤讀取晨川,則會嚴(yán)重影響性能节沦,但是如果全部加載到內(nèi)存當(dāng)中键思,又有可能造成內(nèi)存溢出。此時就可以使用軟引用的方式來存取圖片甫贯。
    • 弱引用。只要發(fā)生垃圾回收看蚜,都會被清除

END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叫搁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子供炎,更是在濱河造成了極大的恐慌渴逻,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件音诫,死亡現(xiàn)場離奇詭異惨奕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)竭钝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門梨撞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人香罐,你說我怎么就攤上這事卧波。” “怎么了庇茫?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵港粱,是天一觀的道長。 經(jīng)常有香客問我旦签,道長查坪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任宁炫,我火速辦了婚禮偿曙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淋淀。我一直安慰自己遥昧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布朵纷。 她就那樣靜靜地躺著炭臭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袍辞。 梳的紋絲不亂的頭發(fā)上鞋仍,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音搅吁,去河邊找鬼威创。 笑死落午,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肚豺。 我是一名探鬼主播溃斋,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吸申!你這毒婦竟也來了梗劫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤截碴,失蹤者是張志新(化名)和其女友劉穎梳侨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體日丹,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡走哺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哲虾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丙躏。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖妒牙,靈堂內(nèi)的尸體忽然破棺而出彼哼,到底是詐尸還是另有隱情,我是刑警寧澤湘今,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布敢朱,位于F島的核電站,受9級特大地震影響摩瞎,放射性物質(zhì)發(fā)生泄漏拴签。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一旗们、第九天 我趴在偏房一處隱蔽的房頂上張望蚓哩。 院中可真熱鬧,春花似錦上渴、人聲如沸岸梨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曹阔。三九已至,卻和暖如春隔披,著一層夾襖步出監(jiān)牢的瞬間赃份,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抓韩,地道東北人纠永。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像谒拴,于是被迫代替她去往敵國和親尝江。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1.什么是垃圾回收英上? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
    簡欲明心閱讀 89,409評論 17 311
  • JVM架構(gòu) 當(dāng)一個程序啟動之前茂装,它的class會被類裝載器裝入方法區(qū)(Permanent區(qū)),執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,648評論 0 7
  • 許多高級編程語言都帶有自動垃圾回收特性善延,以將程序員從繁瑣復(fù)雜的內(nèi)存分配和釋放工作中解脫。本文將概述常見的垃圾回收算...
    kelgon閱讀 2,044評論 2 52
  • 原文閱讀 前言 這段時間懈怠了城侧,罪過易遣! 最近看到有同事也開始用上了微信公眾號寫博客了,挺好的~給他們點(diǎn)贊嫌佑,這博客我...
    碼農(nóng)戲碼閱讀 5,948評論 2 31
  • 聲明:原創(chuàng)文章豆茫,轉(zhuǎn)載請注明出處。http://www.reibang.com/u/e02df63eaa87 垃圾收...
    唐影若凡閱讀 1,055評論 1 6