博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么时候触发MinorGC?什么时候触发FullGC?
阅读量:4150 次
发布时间:2019-05-25

本文共 678 字,大约阅读时间需要 2 分钟。

触发MinorGC(Young GC)

    虚拟机在进行minorGC之前会判断老年代最大的可用连续空间是否大于新生代的所有对象总空间

    1、如果大于的话,直接执行minorGC

    2、如果小于,判断是否开启HandlerPromotionFailure,没有开启直接FullGC

    3、如果开启了HanlerPromotionFailure, JVM会判断老年代的最大连续内存空间是否大于历次晋升的大小,如果小于直接执行FullGC

    4、如果大于的话,执行minorGC

触发FullGC

  • 老年代空间不足

     如果创建一个大对象,Eden区域当中放不下这个大对象,会直接保存在老年代当中,如果老年代空间也不足,就会触发Full GC。为了避免这种情况,最好就是不要创建太大的对象。

  • 持久代空间不足

    如果有持久代空间的话,系统当中需要加载的类,调用的方法很多,同时持久代当中没有足够的空间,就出触发一次Full GC

  • YGC出现promotion failure

    promotion failure发生在Young GC, 如果Survivor区当中存活对象的年龄达到了设定值,会就将Survivor区当中的对象拷贝到老年代,如果老年代的空间不足,就会发生promotion failure, 接下去就会发生Full GC.

  • 统计YGC发生时晋升到老年代的平均总大小大于老年代的空闲空间

      在发生YGC是会判断,是否安全,这里的安全指的是,当前老年代空间可以容纳YGC晋升的对象的平均大小,如果不安全,就不会执行YGC,转而执行Full GC。

  • 显示调用System.gc

转载地址:http://rlvti.baihongyu.com/

你可能感兴趣的文章
一线互联网企业高级Android工程师面试题大全,成功入职阿里
查看>>
一线互联网大厂中高级Android面试真题收录!系列篇
查看>>
一线互联网大厂面试真题系统收录!威力加强版
查看>>
一线互联网移动架构师360°全方面性能调优,已拿offer入职
查看>>
一线互联网移动架构师NDK模块开发!附大厂真题面经
查看>>
从外包公司到今日头条offer,一篇文章帮你解答
查看>>
作为Android开发者,十年开发经验Android架构师,面试总结
查看>>
作为Android开发者,阿里巴巴Android面试都问些什么?系列篇
查看>>
作为一个Android程序员你还不会JetPack?聪明人已经收藏了!
查看>>
作为字节跳动面试官,拿下我人生中第7个Offer,真香
查看>>
你会的还只有初级安卓工程师的技术吗?论程序员成长的正确姿势
查看>>
你会的还只有初级工程师的技术吗?大厂面试题汇总
查看>>
保洁阿姨看完都会了!一个三非渣本的Android校招秋招之路,先收藏了
查看>>
保洁阿姨看完都会了!从零开始系统化学Android,通用流行框架大全
查看>>
保洁阿姨看完都会了!我的头条面试经历分享,3面直接拿到offer
查看>>
Android进阶:Android开发究竟该如何学习,一线互联网公司面经总结
查看>>
Android进阶:你有过迷茫吗?使用指南
查看>>
android适配器,Android多线程实现方式及并发与同步,隔壁都馋哭了
查看>>
android适配布局,大佬手把手教你如何仿写出大厂的APP,一篇文章帮你解答
查看>>
android适配问题,年末阿里百度等大厂技术面试题汇总,架构师必备技能
查看>>