GC基礎

什么是GC

GC是垃圾回收,JVM通過GC幫助回收沒用的內(nèi)存粘招。GC主要發(fā)生在堆上藻雌,偶爾也在方法區(qū)或者元數(shù)據(jù)區(qū)。

GC過程

  • 找到?jīng)]用的內(nèi)存
  • 清除沒用的內(nèi)存

如何找到?jīng)]用的內(nèi)存

  • 引用計數(shù)算法怀喉,對象每多一次引用就加1,計數(shù)為0的代表可清除船响,不能解決相互引用且每次引用和去引用都伴隨加減法躬拢,性能較差躲履。
  • 可達性分析算法,通過對GC-ROOTS對象進行引用分析聊闯,找出沒有指向該GC-ROOTS對象的引用鏈的對象即為可回收對象工猜。一個對象可以有多個root,下邊這些對象不會被垃圾回收所以可以當GC-ROOTS對象菱蔬,有
    • 方法區(qū)中類靜態(tài)屬性引用的對象
    • 方法區(qū)中常量引用的對象
    • 本地方法棧引用的對象(本地變量表)
    • 虛擬機棧中引用的對象(本地變量表)

如何清除沒用的內(nèi)存

  • 標記-清除:分為兩個階段篷帅,標記階段和清除階段,標記階段拴泌,遍歷所有的根節(jié)點找到所有可達的對象魏身,未標記的就是需要被GC的。清除階段弛针,將沒有被標記的清除掉叠骑。缺點:速度慢李皇,內(nèi)存碎片削茁。會stop the world。適用于存活對象比回收對象少的場景掉房。
  • 標記-整理(老年代):遍歷GC-ROOTS對象茧跋,標記可達的對象,將可達的對象移動到內(nèi)存的另一端卓囚,邊界外的內(nèi)存清空瘾杭。缺點:性能差,適用于存活對象少的場景哪亿。
  • 復制算法(新生代):將內(nèi)存分為兩塊粥烁,每次只用一塊,每次GC將存活對象移動到另一塊蝇棉,這塊內(nèi)存全部刪除讨阻,缺點:浪費空間,適用于存活對象少的場景篡殷。

分代算法

內(nèi)存中的對象分為兩種钝吮,一種用后即焚,一種綠水長流板辽,所以要進行分代收集將內(nèi)存分為年輕代和老年代奇瘦,兩代采用不同的GC算法。

  • 年輕代:大部分對象都是短命的劲弦,采用復制算法耳标。
  • 老年代:大部分都是長命的,采用標記整理算法邑跪。
    年輕代+老年代=堆內(nèi)存次坡,年輕代:老年代=1:2纲仍,年輕代=Eden(8)+survivor(1)+survivor(1)。

對象經(jīng)歷流程

new贸毕,出生在Eden區(qū)郑叠,經(jīng)過一次GC活下來了,和s1活下來的伙伴搬到s2,清空s1+Eden區(qū)明棍,調(diào)換s1和s2乡革,加一歲,現(xiàn)在到了s1,再次GC和Eden區(qū)的伙伴搬到s2,調(diào)換s1,s2加一歲摊腋,進入老年代的條件

  • 到達年齡了(15)
  • 對象體積太大

何時發(fā)生full gc

  • System.gc()方法的調(diào)用 沸版。
  • 老年代內(nèi)存不足時。
  • 方法區(qū)或者元數(shù)據(jù)區(qū)內(nèi)存不足時兴蒸。
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末视粮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子橙凳,更是在濱河造成了極大的恐慌蕾殴,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岛啸,死亡現(xiàn)場離奇詭異钓觉,居然都是意外死亡,警方通過查閱死者的電腦和手機坚踩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門荡灾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞬铸,你說我怎么就攤上這事批幌。” “怎么了嗓节?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵荧缘,是天一觀的道長。 經(jīng)常有香客問我赦政,道長胜宇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任恢着,我火速辦了婚禮桐愉,結果婚禮上,老公的妹妹穿的比我還像新娘掰派。我一直安慰自己从诲,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布靡羡。 她就那樣靜靜地躺著系洛,像睡著了一般俊性。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上描扯,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天定页,我揣著相機與錄音,去河邊找鬼绽诚。 笑死典徊,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的恩够。 我是一名探鬼主播卒落,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蜂桶!你這毒婦竟也來了儡毕?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扑媚,失蹤者是張志新(化名)和其女友劉穎腰湾,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钦购,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡檐盟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了押桃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡导犹,死狀恐怖唱凯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谎痢,我是刑警寧澤磕昼,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站节猿,受9級特大地震影響票从,放射性物質發(fā)生泄漏。R本人自食惡果不足惜滨嘱,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一峰鄙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧太雨,春花似錦吟榴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兜看。三九已至,卻和暖如春狭瞎,著一層夾襖步出監(jiān)牢的瞬間细移,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工熊锭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留葫哗,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓球涛,卻偏偏與公主長得像劣针,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亿扁,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

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