minor GC 过程解析

minor GC 是发生在堆内存-新生代中的GC,过程如下:(图片来自文献,侵删)

 

1.首先,所有新创建对象放在eden区域,两个survivor区域开始为空。

minor GC 过程解析

 2.当新创建的对象将eden区域装满,一次minor GC 被触发。

minor GC 过程解析

3.存活对象被移动到第一块survivor 区域(S0),不存活对象随着eden区域的清理而被删除。

minor GC 过程解析

4.下一次minor GC ,eden区域和上次一样,存活对象被移动到survivor区域,不存活对象被清理删除,和上次不同的是,这次存活对象被移动到另一个survivor区域(S1)。另外,S0中上次minor GC的幸存对象,年龄+1,然后被一起移动到S1区域。一旦所有的幸存对象都被移动到S1,S0和eden区域都会被清理掉。注意此时S1区域有不同年龄的幸存对象。

minor GC 过程解析

5.下一次minor GC,和之前的一轮一样。不同的是,这一次S0和S1变换了角色,存活的对象被移动到S0,上次幸存的对象年龄+1,eden和S1区域被清空。

minor GC 过程解析

 

to be continue....

 

 

参考文献:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html