JVM學(xué)習(xí)筆記

1. young GC 和 full GC

  • young gc:回收年輕代垃圾,回收頻繁握巢,速度較快
  • full gc:回收老年代+年輕代,速度比young gc慢約10倍

2.JVM內(nèi)存分配與回收

2.1 對象分配時優(yōu)先進(jìn)入Eden
2.2 大對象直接進(jìn)入老年代
  • 通過設(shè)置JVM參數(shù) -XX:PretenureSizeThreshold,當(dāng)對象大于該值時剩辟,直接放入老年代
2.3 長期存活對象進(jìn)入老年代
  • 默認(rèn)經(jīng)過15次young gc
2.4 對象動態(tài)年齡判斷

+survivor區(qū)中,一批對象占據(jù)的大小大于survivor區(qū)的50%時往扔,大于這批對象最大年齡的對象都放入老年代(一般在young gc之后執(zhí)行)

2.5 young gc之后贩猎,存活的對象survivor區(qū)域放不下,這些對象也會直接放入老年代
2.6 老年代空間分配擔(dān)保機制

在young gc之前萍膛,進(jìn)行判斷
(1)如果老年代的剩余大小>=年輕代所有對象的大小之和吭服,則觸發(fā)young gc;否則執(zhí)行步驟2
(2)如果沒有設(shè)置擔(dān)保參數(shù) -XX:HandlePromotionFailure(jdk8之后默認(rèn)設(shè)置了該值)蝗罗,則執(zhí)行full gc艇棕;否則執(zhí)行步驟3
(3)判斷老年代的可用空間是否大于之前每次young gc之和進(jìn)入老年代對象的平均值大小,如果剩余空間較大串塑,則執(zhí)行young gc沼琉,否則執(zhí)行full gc


老年代空間分配擔(dān)保機制.png

3.如何判斷對象是否可被回收

  • 引用計數(shù)法:對象每被引用一次,次數(shù)+1桩匪,引用失效打瘪,次數(shù)-1;引用為0吸祟,對象即為可被回收對象

優(yōu)點:實現(xiàn)簡單瑟慈,效率高
缺點:可能出現(xiàn)循環(huán)引用

  • 可達(dá)性分析:通過一系列GC ROOTs節(jié)點作為七點,開始搜索屋匕,可以到達(dá)的節(jié)點標(biāo)記為非垃圾對象葛碧,不可到達(dá)的節(jié)點就是垃圾對象

可以作為GC Roots的節(jié)點:線程棧中的本地變量,靜態(tài)變量过吻,本地方法棧中的變量

  • finalize()方法最終判斷是否存活
    即使對象在可達(dá)性分析中被標(biāo)記為垃圾對象进泼,也不是立馬被清除的,只有當(dāng)再被標(biāo)記時纤虽,才會被清除乳绕。就如同被判了“死刑”,也不是“非死不可”的逼纸。在finalize()方法中洋措,他們還有最后一次不被清除的機會

    1. 對在可達(dá)性分析中,沒有與GC Root相連的對象杰刽,進(jìn)行第一次標(biāo)記菠发,并進(jìn)行一次篩選王滤;篩選的條件是:對象必須要重寫finalize()方法,如果沒有重寫滓鸠,則直接回收
    2. 對有重寫finalize()方法的對象雁乡,在回收之前,先執(zhí)行該方法糜俗,如果在方法中踱稍,該對象重新與引用鏈上的變量產(chǎn)生聯(lián)系(比如賦值給某個類變量或者成員對象的變量),那么這個對象在第二次標(biāo)記時悠抹,就不會被刪除
  • 如何判斷一個類是無用的類
    (1) 所有該類的實例均被回收珠月,即不會再有對象的對象頭指向該類的類元數(shù)據(jù)
    (2)該類的類加載器被回收了
    (3)該類對于的java.lang.Class對象沒有在任何地方被引用,即無法再通過反射訪問該對象屬性

4.垃圾回收算法

  • 標(biāo)記-清除法:分為標(biāo)記和清除連個階段

    • 優(yōu)點:算法簡單
    • 缺點:
      (1)效率低锌钮,需要遞歸與全堆對象遍
      (2)回收之后的空間離散不連續(xù)
  • 復(fù)制算法:將內(nèi)存大小分為兩塊桥温,每次只用其中一塊引矩,當(dāng)對使用的一塊進(jìn)行回收時梁丘,將存活的對象復(fù)制到另一塊去

    • 優(yōu)點:空間連續(xù)
    • 缺點:空間使用率低,每次只能使用一半的空間
  • 標(biāo)記-整理算法:先執(zhí)行標(biāo)記旺韭,然后將存活對象向前移動氛谜,最好釋放端邊界以外的空間

  • 分代回收算法:對年輕代和老年代采用不同的算法進(jìn)行回收

    • 對于年輕代:90%的對象都是“朝生夕死”,只有很少的對象存活区端,可以采用復(fù)制算法
    • 對于老年代:對象存活幾率比較高值漫,可以采用“標(biāo)記-清除”或是“標(biāo)記-整理”算法,這兩種算法一般比復(fù)制算法慢10倍以上

5.垃圾收集器

所謂垃圾收集器织盼,其實就是垃圾搜集算法的具體實現(xiàn)杨何。沒有一個一勞永逸的垃圾搜集器,每種垃圾收集器都有其使用場景

  • Serial收集器:串行收集器
    在垃圾搜集期間沥邻,只有一個線程去執(zhí)行垃圾搜集工作危虱,此時,其他所有線程都是停止工作(STW)


    Serial收集器.png
    • 有點:單線程簡單且高效唐全,沒有線程切換
    • 缺點:所有線程STW
  • ParNews收集器:Serial的多線程版本埃跷,線程數(shù)一般與CPU核心數(shù)相等


    ParNews收集器.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市邮利,隨后出現(xiàn)的幾起案子弥雹,更是在濱河造成了極大的恐慌,老刑警劉巖延届,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剪勿,死亡現(xiàn)場離奇詭異,居然都是意外死亡方庭,警方通過查閱死者的電腦和手機厕吉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門赦颇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赴涵,你說我怎么就攤上這事媒怯。” “怎么了髓窜?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵扇苞,是天一觀的道長。 經(jīng)常有香客問我寄纵,道長鳖敷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任程拭,我火速辦了婚禮定踱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恃鞋。我一直安慰自己崖媚,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布恤浪。 她就那樣靜靜地躺著畅哑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪水由。 梳的紋絲不亂的頭發(fā)上荠呐,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天,我揣著相機與錄音砂客,去河邊找鬼泥张。 笑死,一個胖子當(dāng)著我的面吹牛鞠值,可吹牛的內(nèi)容都是我干的媚创。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼齿诉,長吁一口氣:“原來是場噩夢啊……” “哼筝野!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粤剧,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤歇竟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抵恋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焕议,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年弧关,在試婚紗的時候發(fā)現(xiàn)自己被綠了盅安。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唤锉。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖别瞭,靈堂內(nèi)的尸體忽然破棺而出窿祥,到底是詐尸還是另有隱情,我是刑警寧澤蝙寨,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布晒衩,位于F島的核電站,受9級特大地震影響墙歪,放射性物質(zhì)發(fā)生泄漏听系。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一虹菲、第九天 我趴在偏房一處隱蔽的房頂上張望靠胜。 院中可真熱鬧,春花似錦毕源、人聲如沸浪漠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郑藏。三九已至,卻和暖如春瘩欺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拌牲。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工俱饿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人塌忽。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓拍埠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親土居。 傳聞我的和親對象是個殘疾皇子枣购,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,930評論 2 361

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