JVM22——分代回收机制
JVM同时综合使用了三种垃圾回收算法。这就是分代回收机制。
内存空间可以分为新生代和老年代,新生代又可以分为伊甸园和幸存者from,幸存者to。之所以采用分代回收机制,是为了使不同的垃圾回收策略。新生代用于存放朝生夕死的对象,会频繁的进行垃圾清理。
一个对象被创建后,首先会放入新生代的伊甸园中。
当新生区内存无法放入新的对象时,会触发一次Minor GC,将根据根可达算法判断伊甸园和幸存区From中哪些对象可以被回收,对于没有被垃圾回收的对象,根据复制算法将其复制到幸存区to中,交换幸存区From和幸存区To,并将未被回收对象寿命增1。
当幸存区中的对象寿命到了15,说明这些对象的生命周期较长,这些对象将会被移到老年代中。老年代的垃圾回收频率较低。
如果堆中新生代快满了,放不进新的对象,同时老年代也快满了,就会触发Full GC。对整个堆进行垃圾回收。
java全栈日日学 文章被收录于专栏
java全栈每日必学,不要高估自己一年能做的事,不要低估自己十年能做的事