垃圾收集

发布时间 2023-07-21 00:36:03作者: AIxuexiH

怎样判断对象存活

引用计数法

  • 实现难度较小
  • 无法解决循环依赖

可达性分析

  • 实现较为复杂
  • 当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。不可达对象。
  • 可作为GC Roots:
    • 虚拟机栈中引用的对象。

    • 方法区中类静态属性实体引用的对象。

    • 方法区中常量引用的对象。

    • 本地方法栈中JNI引用的对象。

垃圾收集算法

标记-清除法

标记- 复制

标记-整理

分代收集法

大多数的对象都是朝生夕死的

  • 对于新生代,主要采用标记-复制法,因为存货的对象是极少的
  • 而对于老年代,存活的对象较多,就需要使用标记清除,标记复制法

经典垃圾收集器

古老的串行收集器 Serial

  • 垃圾收集操作是串行化的 在收集时会停止其他进程
  • 在新生代使用 标记-复制法
  • 老年代使用 标记-整理法

parNew 串行收集器的后继者

  • 在收集新生代时使用并行收集
  • 在老年代使用串行收集

Parallel收集器 类似于parNew的垃圾收集器

  • 关注的是系统的吞吐量 并且可以使用参数来设置系统的吞吐量

Parallel Old 收集器

  • 在老年代使用并行收集 并且依旧使用标记整理法

CMS收集器 最速传说

  • 已获得最短的系统停顿时间为目标