JVM垃圾回收算法

103 阅读1分钟

垃圾回收算法

  1. 标记清除法 image.png 步骤:
  • 找到那些不会被回收的对象,比如静态变量或正在执行的对象,将其标记为 GC Root
  • 顺着 GC Root 对象的引用链找,直接或者间接引用的标记是 GC Root
  • 清除: 释放未加标记的对象占用的内存 注意:
  • 会产生内存碎片
  1. 标记整理法 image.png 步骤:
  • 前面的标记阶段、清理阶段与标记清除法类似
  • 多了一步整理的动作,将存活对象向一端移动,可以避免内存碎片产生 注意:
  • 性能上比较慢
  • 多用于新生代中
  1. 标记复制法

image.png 步骤:

  • 前面的标记阶段、清理阶段与标记清除法类似
  • 将整个内存分成两个大小相等的区域,from 和 to,其中 to 总是处于空闲,from 存储新创建
  • 在找出存活对象后,会将它们从 from 复制到 to 区域,复制的过程中自然完成了碎片整理
  • 复制完成后,交换 from 和 to 的位置即可 注意:
  • 空间成倍增加
  • 多用于老年代中