JVM:GC机制

如果你对jvm没有基本的了解,那么你可以先了解jvm之后再参阅本人会更便于理解

建议参考文章:《一张图看懂JVM》

垃圾回收机制(GC)

JVM:GC机制_第1张图片
首先要知道一些概念
年轻代、老年代、Eden区、Survivor区
年轻代:由Eden区、Survivor区组成
Eden区:new 出的新对象最初都存放在这里
Survivor区:当Eden区满之后,MinorGc机制会清理无引用状态的对象,并将GCRoot对象复制到Survivor区其中一个区内
GCRoot:就是指当前仍在直接引用的对象,GCRoot对象所引用的全部对象会形成一个GCRoot链

new对象
JVM:GC机制_第2张图片
Eden区满之后会通过Minor GC机制,将全部的GCRoot(GCroot的代数+1)复制到From上,其余未被引用对象会被清楚
JVM:GC机制_第3张图片
当下次Eden区被占满时,MinorGC会再次被调用,对Eden区和Survivor区内未被引用对象清除,将GCroot的代数再加1
JVM:GC机制_第4张图片
GCroot对象会一直在survivor区之间存在,当GCroot代数达到15代之后会移动至老年代。

而当老年代满之后,会产生OOM。即内存沾满,进程被动停止。

你可能感兴趣的:(JAVA,面试知识点)