常用垃圾回收算法
- 标记-清理算法
- 常用于新生代回收算法,即标记垃圾区域,然后清除垃圾区域,缺点是会产生很多内存碎片
- 复制算法
- 常用于新生代回收算法,将正在使用的回收算法复制到一块新的区域,然后将原区域标记为已清理的内存区域,这样可以去掉很多内存碎片
- 标记-整理算法
垃圾收集器分类
- serial
- parnew
- 新生代并行回收垃圾,常用于server端新生代回收,不利于在单核处理器下使用该回收算法
- parallel scavenge
- 新生代串行回收垃圾,吞吐量优先,在响应时间内完成回收
- serial old
- parallel old
- 老年代并行回收垃圾,serial old的多线程版本,并且实现了吞吐量优先
- cms
- 垃圾回收一共有4个阶段,其中只有初始标记、并发标记、并发清理三个步骤可以和用户线程同时执行,重新标记需要先挂起用户线程,这是一个比较好的折中垃圾回收算法,它并发集高,低停顿
- 初始标记(并发执行)
- 并发标记(并发执行)
- 重新标记(串行执行)
- 并发清理(并发执行)
- g1
- 将内存分为多块region
- 初始标记(串行执行)
- 并发标记(并发执行)
- 最终标记(串行多线程执行)
- 筛选回收(串行多线程执行)
转载于:https://www.cnblogs.com/shenjie2017/articles/10511962.html