JVM分代垃圾回收机制:
JVM的内存划分为堆(heap)和堆栈(stack)。堆栈主要用于存储方法参数,局部变量等。堆主要用于存放对象的内存,对象的创建和释放、垃圾回收就在这里进行。
在JVM中,堆栈空间划分为年轻代(Young Generation)和年老代(Old Generation),又将年轻代分为Eden区、From区和To区,新建对象总是在Eden区中进行,如果Eden空间已满,就触发一次Young GC,将还在使用的对象复制到From区,这样整个Eden区就变成未使用状态,可供继续创建对象,当Eden区再次用完,在触发一次Young GC,将Eden区和From区中还在被使用的对象复制到To区,下一次Young GC把Eden区和To区的还在被使用的对象复制到From区。经过多次Young GC,某些对象在From区和To区多次复制,如果超过了某个阈值对象还未被释放,则将该对象复制到Old Generation。如果Old Generation空间也用完,那么会触发Full GC。Full GC对程序影响极大。所以我们需要设置合理的Young Generation和Old Generation大小,以减少Full GC。
JVM的垃圾回收机制的文字描述
最新推荐文章于 2024-05-25 22:14:46 发布