GC常用算法?

1.标记-标记清除算法,标记压缩算法,复制算法,分代收集算法。(JVM采用的是分代收集算法)

  • 标记-清除算法

给每个对象存储一个标记位,记录对象的状态(死/活),两个阶段,
一.标记阶段:检查对象的标记位的状态,判断是否死亡。
二.清理阶段:将死亡的对象清理掉。

  • 标记-压缩算法

是标记-清除算法的一个改进版。两个阶段:
一:标记阶段:检查对象的状态,判断是否死亡,
二:将所有存活的对象整理放到另外一处空间,把剩下的对象清除掉

  • 复制算法

会将内存平均分两块,每次只使用其中的一块。当这块内存存满了,就会将这个内存存活的对象复制到另外一个内存中,将刚才那块内存清空。

  • 分代收集算法:

堆如果细分,还可分为新生代和老年代
新生代里对象存活时间短,所有采用的算法是复制算法,
老年代,存活率高(生存时间长),所以使用标记-整理,或标记-清除算法

posted @ 2021-02-16 15:08  冰红茶灬  阅读(95)  评论(0编辑  收藏  举报