CS-Notes 学习笔记
Java 后端 · Java 虚拟机

垃圾收集算法有哪几种?各有什么优缺点?

先自己想一想,再看参考要点

参考要点

  • 标记 - 清除:从 GC Roots 出发标记存活对象,清除没有标记的,不移动对象,但会产生内存碎片,空闲总量够也可能放不下大对象
  • 标记 - 整理:把存活对象移向一端,没有碎片,但要搬移对象、修改所有引用
  • 复制:每次只用一半内存,耗时只与存活对象的多少有关,新生代实际用一块 Eden 和两块 Survivor(Serial 默认 8:1:1)
  • 分代收集:依据弱分代假说,新生代用复制,老年代用标记 - 清除(CMS)或标记 - 整理(Parallel Old)
  • 老年代引用新生代的对象时,用卡表标记脏卡,Minor GC 只扫描脏卡,不扫描整个老年代
在学习站中自测这道题

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。