核心思想

  1. 找到内存中存活的对象
  2. 释放不再存活对象的内存,使得程序能够再次利用这部分空间

垃圾回收算法的评价标准

Java 垃圾回收过程会通过单独的 GC 线程来完成,但是不管使用哪一种 GC 算法,都会有部分阶段需要停止所有的用户线程。这个过程被称之为 StopTheWorld 简称 STW,如果 STW 时间过长则会影响用户的使用。

传统垃圾回收算法

标记清除算法

  1. 标记阶段:将所有存活的对象进行标记。Java 中使用可达性分析算法,从 GC Root 开始通过引用链遍历出所有存活对象
  2. 清除阶段:从内存中删除没有被标记,也就是非存活对象

复制算法

将存活的对象放到另外一块空间,并将当前空间清理掉

Untitled

标记整理算法