GC算法

GC常用的算法有四个:

  1. 复制算法
  2. 引用计数法
  3. 标记清除法
  4. 标记压缩法

 

1.复制算法:

主要用的复制算法是在新生区(伊甸园、幸存0区、幸存1区)

每次GC都会将伊甸园区活的对象移到幸存区中;一旦伊甸园区被GC之后就会是空的。

幸存区中哪个区为空,另外一个区就会把活得对象转移进去。

默认当一个对象经历15次GC之后就会进入老年区。

 

2.引用计数法

会将对象做标记,如用用到了就会计数。然后计数为0就会被清除。

 

3.标记清除法

第一次扫描这些对象,用到了就经行标记。第二次扫描对没有标记的对象进行清除。

 

4.标记压缩法

先进行多次的标记清除,然后对其进行压缩。

 

总结

内存效率:复制算法>标记清除算法>标记压缩算法

内存整齐度:复制算法=标记压缩算法>标记清除算法

内存利用率:标记压缩算法=标记清除算法>复制算法

 

GC:分代收集算法

新生代

  • 存活率低
  • 复制算法

老年代

  • 区域大
  • 标记清除(内存碎片不是太多) + 标记压缩混合 实现

 

posted @ 2022-06-24 11:20  不想当将军的好士兵  阅读(1038)  评论(0)    收藏  举报