- 程序计数器
- 虚拟机栈
- 本地方法栈
- Java堆
- 方法区:常量、静态变量、加载的类信息、即时编译器编译后的代码
- 引用计数法
- 可达性分析算法:当对象与GC Roots之间没有任何引用链相连时,对象可以被回收
GC Roots:
- 栈中局部变量引用的对象
- 方法区中静态变量或常量引用的对象
- 标记-清除算法
- 复制算法:适用于新生代
- 标记-整理算法:适用于老年代
回收老年代
- 初始标记:STW
- 并发标记
- 重新标记:STW
- 并发清除
将整个Java堆划分为多个大小相等的独立区域(Region),优先回收价值最大的Region
- 同时回收新生代和老年代
- 停顿可预测