垃圾回收的整个过程

image

过程描述

  1. 优先在eden分配
  2. 大对象直接进去老年代
  3. 年轻代分配失败 进行minor gc
  4. minor gc前会 老年代内存“分配担保” 最大的连续空闲空间大于 历次晋升对象总大小
    a. 是 安全进行minor gc
    b. 否 先进行full gc
  5. minor gc 后
    a. survivor 容纳不下的存活对象,晋升老年代
    b. survivor放得下存活空间 但是 “动态年龄判断” 超过survivor一半空间 年龄大于等于n的晋升老年代
  6. 长期存活的对象进入老年代:minor gc后存活对象年龄加一, 存活对象年龄熬到15 ,下次 minor gc 就会晋升老年代 也就是16岁成年了 老了
    如果 minor gc 晋升老年代的对象总大小 老年代放不下或者 老年代内存占用大于cms 的触发比例 进行full gc

思考几个问题

• 对象在新生代的分配
• 什么时候会触发Minor GC
• 触发Minor GC之前会如何检查老年代可用内存大小和新生代对象大小
• 如何检查老年代可用内存大小和历次Minor GC之后升入老年代的平均对象大小
• 什么情况下Minor GC之前会提前触发Full GC
• 什么情况下会直接触发Minor GC
• Minor GC之后有哪几种情况对象会进入老年代

posted @ 2021-03-16 23:45  mushishi  阅读(238)  评论(0编辑  收藏  举报