1. JVM五大组成部分:
- PC
- 栈
- 本地方法栈
- 堆
- 方法区
2. GC:
2.1 内存管理机制
- 显示内存管理
- 隐式内存管理
2.2 GC算法
- 引用计数法
- 根搜索算法(标记算法)
2.2.1 GCroot:
就是一组必须活跃的引用.这些引用位于栈、方法区中。能通过其调用堆内存中的对象
- 虚拟机栈中的引用对象
- 方法区中的静态属性引用的对象
- 方法区中常量引用的对象
2.2.2 引用链
从GC Root出发,向下搜索,直到目标节点,搜索所走的路径称为引用链(Reference chain)
2.2.3 回收标准
一个对象与任何根节点都不可达,即可回收
3. GC内存回收
- Shallow size 对象本身所占用的内存
- Retained size 回收一个对象后,连带着回收的其他引用对象的总内存
4.回收算法
4.1 标记清除算法
- 会产生大量的内部碎片
4.2 标记整理算法
- 移动耗时
4.3 复制算法
- 利用率低,仅有一半的内存被利用
网友评论