JVM-GC

字节码执行引擎发起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没有释放出对象,则会开始

 

上一篇:《java编程思想》读书笔记——第一章1.7对象的创建和存在时间sp2(java堆、堆GC机制及过程,对象的一生)


下一篇:1.JVM中Heap大小调整影响