jvm内存区域和对象分配过程

对象分配过程

  1. 执行方法时候, 方法压入栈中,局部变量指向的对象在新生代分配内存
  2. 当方法执行完毕,局部变量随栈帧弹出 这时候内存对象就没人引用了
  3. 随着1、2步骤的不断发生,新生代内存满了 ,触发 young gc 回收掉哪些不再被引用的对象实例
  4. 如果有的对象逃过15次 young gc 都还活着(一般是静态变量指向的对象),则会晋升到老年代
  5. 老年代如果内存不足,也会进行 old gc

特殊情况

minor gc前后的几种特殊情况

  1. 大对象直接进入老年代
  2. 空间担保 触发 full gc
  3. 动态对象年龄判断机制
    新生代回收后 存活对象过多,导致大量直接进入老年代
posted @ 2021-03-15 23:20  mushishi  阅读(79)  评论(0编辑  收藏  举报