Java世界系统分析师

JVM—【02】认识JVM的垃圾回收算法与收集器

2020-01-11  本文已影响0人  苡仁ilss

1. 对象存活判断

1.1. 引用计数算法 Reference Counting


1.2. 可达性分析算法 Reachability Analysis

虚拟机栈(战争中的本地变量表)中引用的对象

方法区中类静态属性引用的对象

方法区中常量引用的对象

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


1.3. 引用类型 Reference

指的是类似于Object object = new Object()这类引用,只要强引用存在,垃圾收集器就永远不会回收被引用对象。

描述一些还有用但并非必要的对象。JDK提供了SoftReference来实现软引用

在系统快要发生内存溢出之前,将会把这些对象列进回收范围之中进行第二次回收。如果这次回收还没有足够的内存,才会抛出内存溢出异常。

用来描述非必须对象,它的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集发生之前。JDK提供了WeakReference类来实现弱引用。

当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。

也称为幽灵引用或幻影引用,它是最弱的一种引用关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。JDK提供PhantomReference类来实现虚引用

为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知


1.3. 引用类型 Reference


2. 垃圾收集算

2.1. 标记-清除算法 Mark-Sweep


2.2. 复制算法 Copying


2.3. 标记-整理算法 Mark-Compact


2.4. 分代收集算法 Generational Collection


3. 垃圾收集算

3.1. 枚举根节点


3.2. 安全点 Safepoint


3.3. 安全区域 Safe Region


4. 垃圾收集器

4.1. Serial收集器


4.2. ParNew收集器


4.3. Parallel Scavenge收集器


4.4. Serial Old收集器


4.5. Parallel Old收集器


4.6 CMS(Concurrent Mark Swap) 收集器


4.7 G1(Garbage-First)收集器


关于我

上一篇下一篇

猜你喜欢

热点阅读