1:MinorGC 新生代GC
何时触发?
当Eden区满了无法再分配内存空间的时候此时会触发minorGC
触发时如何检查?
当执行gc前会先计算老年代剩余大小,判断是否满足新生代S区所有对象全部转移。因极端情况gc后s区所有对象都会存活。此时判断如果不够,则会去执行空间担保策略,查看历史gc后进入老年代的平均对象大小,如果不满足,此时会连带触发一次FullGc。
MinorGc后有几种情况?
新生代存活对象大于to区小于老年代则进入老年代
新生代年龄超过15岁进入老年代
新生代to区空间大于50%的最老对象进入老年代
如果老年代和to区无法存放足够的数据此时会触发一次FullGC,FullGC后依然不够则oom
2:FullGC 老年代gc
对象占空间大小超过92%,可配置。此时触发
MinorGC前空间担保检查发现历代gc后进入老年代的对象综合大于剩余空间,此时minorGC会连带进行一次FullGC
minorGC后存活对象大小超过to区和老年代,此时再次触发FullGC