- 引用计数(refrence count )有个标志计数被引用的次数但是这种方式不能解决循环引用的情况
- 根可达算法(root searching)
算法名称 | 概念 | 优点 | 缺点 |
---|---|---|---|
标记-清除(Mark-sweep) | 线性遍历堆内存,将标记为垃圾对象的空间直接清除 | 快,简单 | 因为位置不连续,会产生大量空间碎片,之后存放对象困难 |
复制(Copying) | 将内存分为对象面和空闲面,对象在对象面创建。将存活对象全部复制到空闲面,清除对象面 | 1. 解决空间碎片化 2. 顺序分配内存,简单高效 | 1. 空间利用率低,只有一半的空间存储对象 2. 复制速度慢,不适用适用于对象存活率高的场景 |
标记-整理(Mark-compact) | 移动所有存活对象,按内存地址依次排列,并回收之后的所有空间 | 1.解决空间碎片化2.空间利用率高 | 任何一块移动都需要进行线程同步,移动速度慢,效率低 |
到目前jdk13版本存在的十种垃圾回收器
-
一些常用的命令
java -XX: +PrintFlagsFinal 查看所有JVM配置值 +PrintFlagsInitail 查看JVM默认配置值 +PrintCommandLineFlags 查看运行时参数
详细GC基础知识参考:
JVM 基础知识(GC)