淺談Java GC分代的原因

Java GC(garbage collec,垃圾收集,回收)

GC是對(duì)JVM中的內(nèi)存進(jìn)行標(biāo)記和回收,Sun公司的JDK用的虛擬機(jī)都是HotSpot,對(duì)象化的實(shí)例是放在heap堆內(nèi)存中的,這里講的分代收集也是指對(duì)堆內(nèi)存的回收。

GC的分代收集分為:年輕代、老年代、永久代。(方法區(qū)是被當(dāng)做永久代的,不過JDK1.6后將被取消掉了)

年輕代(Young Generation)、年老代(Old Generation)、永久代(Permanent Generation,也就是方法區(qū))

1.年輕代的GC(存放實(shí)例化的對(duì)象)

年輕代分為三個(gè)區(qū):Eden和兩個(gè)存活區(qū)(Survivor0和Survivor1),分別占內(nèi)存的80%、10%、10%

使用“停止-復(fù)制(Stop-and-copy)”清理法(將Eden區(qū)和一個(gè)Survivor中仍然存活的對(duì)象拷貝到另一個(gè)Survivor中)

當(dāng)Eden區(qū)滿時(shí),就執(zhí)行一次MinorGC,并將剩余存活的對(duì)象都添加到Surivivor0,回收Eden中的沒有存活的對(duì)象。

當(dāng)Surivivor0頁都滿了的時(shí)候,就將仍然存活的存到Surivivor1中,回收Surivivor0中的對(duì)象

Surivivor0和Surivivor1依次去存,當(dāng)兩個(gè)存活區(qū)切換了幾次后(HotSpot默認(rèn)是15次),將仍然存活的對(duì)象復(fù)制到老年代。

2.老年代的GC(存放較大的實(shí)例化的對(duì)象和在年輕代中存活了足夠久的對(duì)象)

老年代GC用的是標(biāo)記-整理算法,即標(biāo)記存活的對(duì)象,向一端移動(dòng),保證內(nèi)存的完整性,然后將未標(biāo)記的清掉。

當(dāng)老年代不夠用時(shí),也會(huì)執(zhí)行Major GC,即Full GC。

注意:如果永久代代存放的常量和類過大,無法全部放入永久代,也會(huì)觸發(fā)永久代的GC,將一部分放入老年代。

3.永久代的GC(存放常量、類)

說明:在JDK1.6版本之后,永久代就要被取消掉了,只留下年輕代和老年代。

說明:年輕代的GC是必須的,但是老年代和永久代并不是必須的,可以通過設(shè)置參數(shù)來決定是否對(duì)類進(jìn)行回收。

下面是畫的一個(gè)大概的圖片:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虛擬機(jī)(JVM)垃圾回收器提供...
    簡(jiǎn)欲明心閱讀 90,360評(píng)論 17 311
  • 一 、java虛擬機(jī)底層結(jié)構(gòu)詳解 我們知道,一個(gè)JVM實(shí)例的行為不光是它自己的事,還涉及到它的子系統(tǒng)、存儲(chǔ)區(qū)域、...
    葡萄喃喃囈語閱讀 1,582評(píng)論 0 4
  • JVM架構(gòu) 當(dāng)一個(gè)程序啟動(dòng)之前,它的class會(huì)被類裝載器裝入方法區(qū)(Permanent區(qū)),執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,835評(píng)論 0 7
  • 作者:一字馬胡 轉(zhuǎn)載標(biāo)志 【2017-11-12】 更新日志 日期更新內(nèi)容備注 2017-11-12新建文章初版 ...
    beneke閱讀 2,326評(píng)論 0 7
  • 原文閱讀 前言 這段時(shí)間懈怠了,罪過! 最近看到有同事也開始用上了微信公眾號(hào)寫博客了,挺好的~給他們點(diǎn)贊,這博客我...
    碼農(nóng)戲碼閱讀 6,150評(píng)論 2 31

友情鏈接更多精彩內(nèi)容