JVM-- 垃圾回收算法
![JVM--垃圾回收算法](https://static001.geekbang.org/infoq/c1/c1530fa70e74fe804cd6dd876b2e31c8.jpeg)
一、引用计数法
给每个对象分配一个程序计数器,使用一次则加一,每次把没有使用过的对象清除掉。
坏处:每个对象都要有一个程序计数器,对内存消耗严重。这个算法基本不用
二、复制算法
一旦 Eden 区被 GC 后会将 Eden 活的对象和 幸存区 from 的对象放到幸存区 to 中,然后 幸存区 to 变成 幸存去 from,Eden 就会是空的,幸存 to 区也是空的。
当一个对象经历了 15 次 GC 之后,就会进入老年代。
好处:没有内存碎片
坏处:浪费了内存空间;幸存区多了一半空间是空的
![](https://static001.geekbang.org/infoq/5f/5f7e766711372d9a33a144466dc831cf.png)
三、标记压缩清除算法
回收:对需要清楚的对象标记
压缩:再一次扫描,向一端存放存活的对象
清除:对没有标记的对象进行清除
好处:没有空间浪费
坏处:多了一次算法,对时间消耗
版权声明: 本文为 InfoQ 作者【是老郭啊】的原创文章。
原文链接:【http://xie.infoq.cn/article/4181a08bfe835d595b29b6369】。文章转载请联系作者。
评论