37 lines
604 B
Markdown
37 lines
604 B
Markdown
|
|
# 垃圾回收
|
|||
|
|
|
|||
|
|
**堆空间的结构**
|
|||
|
|
|
|||
|
|
- 新生代
|
|||
|
|
- `Eden`
|
|||
|
|
- `Survivor`
|
|||
|
|
- S0
|
|||
|
|
- S1
|
|||
|
|
- 老年代
|
|||
|
|
- 永久代 -> 元空间直接内存(JDK 8+)
|
|||
|
|
|
|||
|
|
**策略**
|
|||
|
|
|
|||
|
|
- 在创建对象时默认在 `Eden` 创建
|
|||
|
|
- 大对象进入老年代
|
|||
|
|
- 长期存活的对象进入老年代
|
|||
|
|
|
|||
|
|
**GC**
|
|||
|
|
|
|||
|
|
- 部分 GC
|
|||
|
|
- Full GC
|
|||
|
|
|
|||
|
|
**死亡对象判断方法**
|
|||
|
|
|
|||
|
|
- 引用计数法
|
|||
|
|
- 无法解决互相引用问题
|
|||
|
|
- 可达性分析
|
|||
|
|
- 主要方法
|
|||
|
|
|
|||
|
|
**垃圾收集算法**
|
|||
|
|
|
|||
|
|
- 标记-清除算法
|
|||
|
|
- 复制算法
|
|||
|
|
- 标记-整理算法
|
|||
|
|
|
|||
|
|
*实际上使用的是分代收集的方法,针对不同代的特点使用不同方法*
|