字节码执行引擎发起minorGC和
堆区分为年轻代(1/3大小)和老年代(2/3大小)
年轻代分为:Eden区(8/10),survivor0区(1/10),survivor1区(1/10)
GC的判断方:从方法区去找静态变量,从栈区找局部变量,看到有引用的为非垃圾对象
minorGC:
数据首先放在eden区,放满后触发minor gc,把非垃圾对象放入s0区,其他对象释放。
每经历一次gc未被释放,数据分代年龄+1。
下一次eden区放满,会同时清理eden区和s0区的数据,将有引用的放入s1区,数据年龄+1
数据在eden区+s0以及eden区+s1区来回切换
在年轻代年龄达到15(可调参数)之后会移步到老年代,(用jvisualvm可以看到gc过程)
fullGC:
老年区满之后回触发fullGC,会回收整个堆和方法区。
OOM:
如果fullGC没有释放出对象,则会开始