写点什么

架构师训练营第 1 期 -- 第九周作业

发布于: 2020 年 11 月 22 日

请简述 JVM 垃圾回收原理。

JVM垃圾回收,采用分代回收的机制,分为年轻代,老年代,理论依据是,大部份情况下,对象在内存中存活的时间很短,大部份垃圾在新生代就能被快速回收掉,一部份存活时间较长的对象,会进入老年代,在没有被引用的情况下,系统发生Full GC的时候才会被回收掉。

对象是否被引用,采用的方法是从根对象出发,把可达到的对象都标记,而剩下的不可达的对象,就是需要被回收的垃圾对象。

回收过程如图。



  1. 对象分配到Eden区;

  2. 当Eden区满之后,发生Minor GC,清空eden和当前使用的S0或S1,存活的对象轮流放入未使用的survivor区S0,S1。即S0和S1总有一个是空的。

  3. 当年轻代中的对象累积到一定程度,Minor GC后Survivor空间不足以放入新的对象,则之前Survivor区的对象,会被提升到老年代。

  4. 当整个堆空间不足入放入新对象的时候,发生Full GC。



用户头像

还未添加个人签名 2019.03.19 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 1 期 -- 第九周作业