五,GC概念
- GC回收对象是堆空间和永久区
- 标记清除算法--将垃圾回收分为两个阶段:标记阶段和清除阶段。
- 标记阶段:
- 标记从根节点可达的对象
- 根:(1)栈中的引用对象(2)方法区中的静态成员或常量引用的对象(3)JNI方法栈中的引用对象
- 清除阶段
-
- 清除算法:直接清除未被标记的对象
- 压缩算法:将存活对象重新移动到一起
- 复制算法:将原有内存空间分为两个部分,每次使用一块,清除时,将存活对象移动到另外一块
- 分代思想:
- 将对象分为新生代和老生代
- 少量对象存活适合复制算法,大量对象存活适合清理或压缩算法
六,GC收集器
是否在垃圾标记和清理时使用并行(多核处理器)
- 串行收集器
- 效率高,可能会产生较长的停顿
- 新生代、老年代都使用串行回收
- 新生代复制算法,老年代压缩算法
- 并行收集器
- ParNew,Parallel
- CMS收集器--标记阶段是否并行
- 初始标记
- 并发标记
- 重新标记
- 并发清除