- 堆内存初始状态,开辟出新生代和老年代,新生代分为伊甸园区和幸存者区,内存比例为8:1,幸存者区一分为二,划分成幸存者FROM区和幸存者TO区
- 对象首先分配在伊甸园区
- 继续存放新对象
- 当发现新生代空间不足时,触发Minor GC,经过标记清除,伊甸园区的垃圾被回收,存活下来的存入幸存者TO区,年龄+1
- 交换FROM和TO的指针
- 继续产生新对象,存入伊甸园区
- 伊甸园内存不够,进行第二次Minor GC,清除伊甸园和FROM区的垃圾,并且将伊甸园区和FROM区不是垃圾的对象移动到幸存者TO区,年龄+1(此时年龄为1的是此次伊甸园区保留的对象,2位幸存者FROM区保留的对象,其他伊甸园和FROM区的对象都被回收掉了)
- 交换FROM区和TO区的指针
- 当Minor GC 进行多次以后,有一些一直存活的对象,年龄达到一定的阈值(最大15),就把这个对象晋升至老年代
- 当经过一段时间,老年代内存不足时,会进行一次full gc
- 进行一次Full GC ,回收所有对象