引用计数算法:

  • 最初的算法
  • 现代虚拟机大多已弃用此算法
  • 导致循环引用
  • 效率高

可达性分析算法/根搜索算法:

  • HotSpot
  • GC Roots
    • 虚拟机栈的栈帧的局部变量表所引用的对象
    • 本地方法栈的JNI所引用的对象
    • 方法区的静态变量常量所引用的对象
  • 可达性
  • 图论

什么时候进行垃圾回收:

  • 当 eden 区或者 S 区(包括 s0 和 s1 ,又称 from 和 to 区)不够用时
  • 当老年代不够用时
  • 当方法区不够用时
  • System.gc()

番外 GC




标记清除算法

  • 先标记(根据可达性分析算法查找)后清除
  • 效率低
  • 内存碎片化
  • Stop the world(STW)

相关文章: