美文网首页CS面试指南Java学习笔记
GC是在什么时候,对什么东西,做了什么事情

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

作者: 雨笋情缘 | 来源:发表于2017-08-24 15:34 被阅读22次

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

相关文章

  • GC垃圾回收

    GC是在什么时候,对什么东西,做了什么事情? .系统自身决定,不可预测的时间/调用System.gc()的时候。e...

  • java面试题

    1.“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?” 在什么时候: 新生代有一个Eden区...

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

    1、在什么时候GC 首先,GC堆内存分为三部分:Young Generation,Old Generatio...

  • 读《深入理解JAVA虚拟机》-GC篇

    GC是一个项目的一个重要的观察指标,什么时候gc,gc什么东西,如何gc都是需要了解的,以便能更好的support...

  • 对Java GC的简单理解

    灵魂拷问 为什么需要? 对什么东西? 在什么时候? 做什么事情? 一、为什么需要 应用程序对资源操作,通常简单分为...

  • JAVA什么时候执行GC

    GC是在什么时候:eden满了minor gc,升到老年代的对象大于老年代剩余空间full gc,或者小于时被Ha...

  • 图解GC流程

    GC流程是每一个Java开发人员都应该掌握的内容。你知道什么时候触发Minor GC?什么时候触发Minor GC...

  • 图解GC流程

    GC流程是每一个Java开发人员都应该掌握的内容。你知道什么时候触发Minor GC?什么时候触发Minor GC...

  • 什么时候触发GC

    什么时候触发 GC 什么时候触发Young GC----针对年轻代 当Eden区满了的时候,会触发Young GC...

  • 11-Memory Performance

    通常来说,Android对GC做了大量的优化操作,虽然执行GC操作的时候会暂停其他任务,可是大多数情况下,GC操作...

网友评论

    本文标题:GC是在什么时候,对什么东西,做了什么事情

    本文链接:https://www.haomeiwen.com/subject/kfledxtx.html