GC是在什么時候,對什么東西,做了什么事情

1、在什么時候GC

? ? ? ?首先,GC堆內(nèi)存分為三部分:Young Generation,Old Generation,Permanent Generation。

? ? ? ? Young Generation 分為:Eden , Survivor1 , Survivor2, 新創(chuàng)建的對象會分配在Eden區(qū),在經(jīng)歷一次Minor GC后會被移到Survivor 1區(qū),再經(jīng)歷一次Minor GC后會被移到Survivor 2區(qū),直到升至老年代,需要注意的是,一些大對象(長字符串或數(shù)組)可能會直接存放到老年代;升到老年代的對象大于剩余空間時,會發(fā)生Full GC,或者小于時,查看是否設(shè)置了XX:+HandlePromotionFailure(允許擔(dān)保失敗)參數(shù),若允許,則只會進行Minor GC,此時可以容忍內(nèi)存分配失敗;若不允許,強制Full GC。

? ? ? ?GC與非GC時間耗時超過了GCTimeRatio的限制引發(fā)OOM,調(diào)優(yōu)諸如通過NewRatio控制新生代老年代比例,通過MaxTenuringThreshold控制進入老年前生存次數(shù)等。了解GC參數(shù),請參見另一篇文章。

2、對什么東西GC

? ? ? ?從GC root 開始搜索,搜索不到的對象和經(jīng)過第一次標(biāo)記、清理后仍舊沒復(fù)活的對象,這類對象會被GC。

3、GC做了什么事情

? ? ? ? 按照各部分的收集器進行空間回收,其中涉及到的收集器和GC算法參見另兩篇文章:

收集器?和GC算法。

? ? ? ? 新生代做復(fù)制清理、老年代做的是標(biāo)記整理、標(biāo)記清除

參考文獻:

http://icyfenix.iteye.com/blog/715301

https://yemengying.com/2016/05/13/jvm-GC/

http://www.cnblogs.com/zhguang/p/3257367.html

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

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

  • 原文閱讀 前言 這段時間懈怠了,罪過! 最近看到有同事也開始用上了微信公眾號寫博客了,挺好的~給他們點贊,這博客我...
    碼農(nóng)戲碼閱讀 6,150評論 2 31
  • JVM架構(gòu) 當(dāng)一個程序啟動之前,它的class會被類裝載器裝入方法區(qū)(Permanent區(qū)),執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,835評論 0 7
  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虛擬機(JVM)垃圾回收器提供...
    簡欲明心閱讀 90,360評論 17 311
  • 聲明:原創(chuàng)文章,轉(zhuǎn)載請注明出處。http://www.itdecent.cn/u/e02df63eaa87 1、J...
    唐影若凡閱讀 1,334評論 0 6
  • 轉(zhuǎn)載blog.csdn.net/ning109314/article/details/10411495/ JVM工...
    forever_smile閱讀 5,506評論 1 56

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