【JVM篇】【垃圾回收機(jī)制】

【JAVA】【JVM篇】【垃圾回收機(jī)制】

1. 概述:

垃圾收集GC(Garbage Collection)是Java語(yǔ)言的核心技術(shù)之一恃泪, 在Java中谱仪,程序員不需要去關(guān)心內(nèi)存動(dòng)態(tài)分配和垃圾回收的問(wèn)題,這一切都交給了JVM來(lái)處理。

2.什么樣的數(shù)據(jù)才是垃圾?

這個(gè)問(wèn)題其實(shí)很簡(jiǎn)單,對(duì)于Java對(duì)象來(lái)講井厌,如果說(shuō)這個(gè)對(duì)象沒(méi)有被其他對(duì)象所引用該對(duì)象就是無(wú)用的,此對(duì)象就被稱為垃圾致讥,其占用的內(nèi)存也就要被銷(xiāo)毀仅仆。如果不對(duì)垃圾數(shù)據(jù)進(jìn)行刪除很容易會(huì)造成內(nèi)存溢出。

3.回顧一下JVM模型再繼續(xù)往下談

垃圾回收機(jī)制主要針對(duì)的是堆內(nèi)存的垃圾數(shù)據(jù)進(jìn)行刪除垢袱,從而回收內(nèi)存墓拜。


image.png
1)新生代(Young Generation)

新生代的目標(biāo)就是盡可能快速的收集掉那些生命周期短的對(duì)象,一般情況下请契,所有新生成的對(duì)象首先都是放在新生代的咳榜。新生代內(nèi)存按照 8:1:1 的比例分為一個(gè)eden區(qū)和兩個(gè)survivor(survivor0,survivor1)區(qū)爽锥,大部分對(duì)象在Eden區(qū)中生成涌韩。在進(jìn)行垃圾回收時(shí),先將eden區(qū)存活對(duì)象復(fù)制到survivor0區(qū)氯夷,然后清空eden區(qū)臣樱,當(dāng)這個(gè)survivor0區(qū)也滿了時(shí),則將eden區(qū)和survivor0區(qū)存活對(duì)象復(fù)制到survivor1區(qū)腮考,然后清空eden和這個(gè)survivor0區(qū)雇毫,此時(shí)survivor0區(qū)是空的,然后交換survivor0區(qū)和survivor1區(qū)的角色(即下次垃圾回收時(shí)會(huì)掃描Eden區(qū)和survivor1區(qū))踩蔚,即保持survivor0區(qū)為空棚放,如此往復(fù)。特別地馅闽,當(dāng)survivor1區(qū)也不足以存放eden區(qū)和survivor0區(qū)的存活對(duì)象時(shí)飘蚯,就將存活對(duì)象直接存放到老年代馍迄。如果老年代也滿了,就會(huì)觸發(fā)一次FullGC孝冒,也就是新生代柬姚、老年代都進(jìn)行回收。注意庄涡,新生代發(fā)生的GC也叫做MinorGC,MinorGC發(fā)生頻率比較高搬设,不一定等 Eden區(qū)滿了才觸發(fā)穴店。

2)老年代(Old Generation)

老年代存放的都是一些生命周期較長(zhǎng)的對(duì)象,就像上面所敘述的那樣拿穴,在新生代中經(jīng)歷了N次垃圾回收后仍然存活的對(duì)象就會(huì)被放到老年代中泣洞。此外,老年代的內(nèi)存也比新生代大很多(大概比例是1:2)默色,當(dāng)老年代滿時(shí)會(huì)觸發(fā)Major GC(Full GC)球凰,老年代對(duì)象存活時(shí)間比較長(zhǎng),因此FullGC發(fā)生的頻率比較低腿宰。

3)永久代(Permanent Generation)

永久代主要用于存放靜態(tài)文件呕诉,如Java類(lèi)信息、常量池吃度、靜態(tài)變量等甩挫。永久代對(duì)垃圾回收沒(méi)有顯著影響,但是有些應(yīng)用可能動(dòng)態(tài)生成或者調(diào)用一些class椿每,例如使用反射伊者、動(dòng)態(tài)代理、CGLib等bytecode框架時(shí)间护,在這種時(shí)候需要設(shè)置一個(gè)比較大的永久代空間來(lái)存放這些運(yùn)行過(guò)程中新增的類(lèi)亦渗。
JDK1.8之后永久代被刪除,常量池汁尺、靜態(tài)變量放入堆中法精,Java類(lèi)信息放在元空間中。

4.垃圾回收的兩種類(lèi)型

(a) Minor GC:對(duì)新生代進(jìn)行回收均函,不會(huì)影響到年老代亿虽。因?yàn)樾律?Java 對(duì)象大多死亡頻繁,所以 Minor GC 非常頻繁苞也,一般在這里使用速度快洛勉、效率高的算法,使垃圾回收能盡快完成如迟。
(b)Full GC:也叫 Major GC收毫,對(duì)整個(gè)堆進(jìn)行回收攻走,包括新生代和老年代。由于Full GC需要對(duì)整個(gè)堆進(jìn)行回收此再,所以比Minor GC要慢昔搂,因此應(yīng)該盡可能減少Full GC的次數(shù),導(dǎo)致Full GC的原因包括:老年代被寫(xiě)滿输拇、永久代(Perm)被寫(xiě)滿和System.gc()被顯式調(diào)用等摘符。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市策吠,隨后出現(xiàn)的幾起案子逛裤,更是在濱河造成了極大的恐慌,老刑警劉巖猴抹,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件带族,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蟀给,警方通過(guò)查閱死者的電腦和手機(jī)蝙砌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)跋理,“玉大人择克,你說(shuō)我怎么就攤上這事⌒浇椋” “怎么了祠饺?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)汁政。 經(jīng)常有香客問(wèn)我道偷,道長(zhǎng),這世上最難降的妖魔是什么记劈? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任勺鸦,我火速辦了婚禮,結(jié)果婚禮上目木,老公的妹妹穿的比我還像新娘换途。我一直安慰自己,他們只是感情好刽射,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布军拟。 她就那樣靜靜地躺著,像睡著了一般誓禁。 火紅的嫁衣襯著肌膚如雪懈息。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天摹恰,我揣著相機(jī)與錄音辫继,去河邊找鬼怒见。 笑死,一個(gè)胖子當(dāng)著我的面吹牛姑宽,可吹牛的內(nèi)容都是我干的遣耍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼炮车,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼舵变!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起瘦穆,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤棋傍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后难审,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亿絮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年告喊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片派昧。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡黔姜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒂萎,到底是詐尸還是另有隱情秆吵,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布五慈,位于F島的核電站纳寂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泻拦。R本人自食惡果不足惜毙芜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望争拐。 院中可真熱鬧腋粥,春花似錦、人聲如沸架曹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绑雄。三九已至展辞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绳慎,已是汗流浹背纵竖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工漠烧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人靡砌。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓已脓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親通殃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子度液,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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