JVM提问----个人笔记,不喜勿喷

  • 什么时候会尝试触发Minor GC

新生代内存区域基本快满了,再次分配对象的时候,发现空间不足

  • 触发Minor GC之前会检查老年代大小?
  1. 检查老年代可用内存空间,是否大于新生代所有对象的总大小,如果大于新生代所有对象,就可以发起Minor GC
  2. 老年代可用空间小于新生代的所有对象大小,检查'-XX:HandlePromotionFailure'的参数是否设置,如果设置了,就检查老年代的内存大小,是否大于之前每一次Minor GC后进入老年代对象的平均大小,如果大于就进行Minor GC
  3. 如果没有设置'-XX:HandlePromotionFailure'参数,此时就会触发一次Full GC,尽量腾出一些空间,然后再执行Minor GC
  • 什么时候在Minor GC之前会触发一次Full GC

Minor GC后的对象太多,无法放入 survivor区

  • Full GC的算法是什么?

标记整理算法

  • Minor GC之后可能对应哪几种情况?
  1. 剩余存活的对象大小,小于survivor区,此时存活对象进入survivor区
  2. 剩余存活的对象大小,大于survivor区,但是小于老年代可用空间,直接进入老年代
  3. 剩余存活的对象大小,大于survivor区,大于老年代可用空间,就会触发Full GC
  • 哪些情况下Minor GC的对象会进入老年代?
  1. Minor GC 15次的对象会进入老年代,就是说超过年龄的对象
  2. 大对象
  3. Minor GC之后剩下的对象超过survivor区大小

你可能感兴趣的:(JVM)