架构师训练营第 1 期 -- 第九周作业
请简述 JVM 垃圾回收原理。
JVM垃圾回收,采用分代回收的机制,分为年轻代,老年代,理论依据是,大部份情况下,对象在内存中存活的时间很短,大部份垃圾在新生代就能被快速回收掉,一部份存活时间较长的对象,会进入老年代,在没有被引用的情况下,系统发生Full GC的时候才会被回收掉。
对象是否被引用,采用的方法是从根对象出发,把可达到的对象都标记,而剩下的不可达的对象,就是需要被回收的垃圾对象。
回收过程如图。
对象分配到Eden区;
当Eden区满之后,发生Minor GC,清空eden和当前使用的S0或S1,存活的对象轮流放入未使用的survivor区S0,S1。即S0和S1总有一个是空的。
当年轻代中的对象累积到一定程度,Minor GC后Survivor空间不足以放入新的对象,则之前Survivor区的对象,会被提升到老年代。
当整个堆空间不足入放入新对象的时候,发生Full GC。
评论