天天看点

什么时候触发minor gc和full gc

文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。

相关文章:

  1. LeetCode:55. Jump Game(跳远比赛)
  2. Leetcode:300. Longest Increasing Subsequence(最大增长序列)
  3. LeetCode:560. Subarray Sum Equals K(找出数组中连续子串和等于k)

文章目录:

1.触发minor gc

2.触发Full gc

1.触发minor gc

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

2.触发Full gc

        1) 老年代空间不足

                 如果创建一个大对象,eden区中空间不足,直接保存到老年代中,当老年代空间不足时候,直接触发full gc

        2) 持久代空间不足

                如果持久代中需要调用加载的类,调用的方法很多,同时持久代没有足够的空间,会触发full gc

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

        4) 显示调用System.gc()方法

        5) YGC出现promotion failure

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