JVM垃圾收集算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwzsdy/article/details/79954999

标记-清除算法

这里写图片描述
算法核心思想很简单,就是对可回收对象进行标记,然后直接由垃圾收集器回收即可。如图,这就产生了一个问题,内存中的空间变得离散化,即内存碎片(对象的分配需要找到一片足够大小的连续内存空间,如果不足,还是会触发GC)。

复制算法

这里写图片描述
复制算法的核心就是,只使用一半内存用来分配对象,当使用的区域不足以分配时,复制算法将存活对象复制到预留的一半空间,并且是顺序排列的,然后清除本区域。
优点:没有内存碎片
缺点:内存使用率急剧下降!!

标记-整理算法

这里写图片描述
该算法很相似与标记清除,实际上这是为了解决标记-清除算法所带来的内存碎片问题而改进的算法。
同样对回收对象进行标记,清除后添加了对于存活对象全部向内存一段移动的操作。

分代收集算法

这种算法实际上就是组合使用上述算法。
新生代使用复制算法,因为新生代98%的对象都是朝生夕死(当然Hotspot中并没有直接对半分,而是分为一个Eden和两个survivor区,Eden与survivor比例为8:1),老年代采用标记整理或者标记清除算法

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页