GC是在什么时候,对什么东西,做了什么事情

1、在什么时候GC

       首先,GC堆内存分为三部分:Young Generation,Old Generation,Permanent Generation。

        Young Generation 分为:Eden , Survivor1 , Survivor2, 新创建的对象会分配在Eden区,在经历一次Minor GC后会被移到Survivor 1区,再经历一次Minor GC后会被移到Survivor 2区,直到升至老年代,需要注意的是,一些大对象(长字符串或数组)可能会直接存放到老年代;升到老年代的对象大于剩余空间时,会发生Full GC,或者小于时,查看是否设置了XX:+HandlePromotionFailure(允许担保失败)参数,若允许,则只会进行Minor GC,此时可以容忍内存分配失败;若不允许,强制Full GC。

       GC与非GC时间耗时超过了GCTimeRatio的限制引发OOM,调优诸如通过NewRatio控制新生代老年代比例,通过MaxTenuringThreshold控制进入老年前生存次数等。了解GC参数,请参见另一篇文章

2、对什么东西GC

       从GC root 开始搜索,搜索不到的对象和经过第一次标记、清理后仍旧没复活的对象,这类对象会被GC。

3、GC做了什么事情

        按照各部分的收集器进行空间回收,其中涉及到的收集器和GC算法参见另两篇文章:

收集器 和GC算法

        新生代做复制清理、老年代做的是标记整理、标记清除

参考文献:

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文阅读 前言 这段时间懈怠了,罪过! 最近看到有同事也开始用上了微信公众号写博客了,挺好的~给他们点赞,这博客我...
    码农戏码阅读 11,223评论 2 31
  • JVM架构 当一个程序启动之前,它的class会被类装载器装入方法区(Permanent区),执行引擎读取方法区的...
    cocohaifang阅读 5,663评论 0 7
  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供...
    简欲明心阅读 90,169评论 17 311
  • 声明:原创文章,转载请注明出处。http://www.jianshu.com/u/e02df63eaa87 1、J...
    唐影若凡阅读 5,017评论 0 6
  • 转载blog.csdn.net/ning109314/article/details/10411495/ JVM工...
    forever_smile阅读 10,752评论 1 56

友情链接更多精彩内容