JVM垃圾收集器

一、常见垃圾收集算法

1、标记-清除算法:首先标记出需要回收的对象,在标记完成后统一回收所有被标记的对象
2、复制算法:将可用内存按容量分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉
3、标记-整理算法:标记存活的对象都向一端移动,然后直接清理掉端边界以外的内存
4、分代收集算法:根据各个年代的特点采用最合适的收集算法

二、垃圾收集器

垃圾收集器 使用位置 使用算法 可配合收集器 描述
Serial收集器 新生代 复制算法 CMS 单线程、Client模式下默认新生代收集器
ParNew收集器 新生代 复制算法 CMS Serial的多线程版本、Server模式下默认收集器、默认线程数=CPU数量
Parallel Scavenge收集器 新生代 复制算法 多线程、目标关注吞吐量
Serial Old收集器 老年代 标记-整理 Serial的老年代版本、单线程、Client模式下使用
Parallel Old收集器 老年代 标记-整理 Parallel Scavenge的老年代版本、多线程、关注吞吐量
CMS收集器 老年代 标记-清除 Serial、ParNew 并发低停顿、关注最短停顿时间
G1收集器 新生代+老年代 复制+标记整理 面向服务端应用、整体基于标记整理,局部(两个Region见)基于复制

1)吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)
2)停顿时间短则响应速度好提升用户体验;高吞吐量则CPU利用率高,适合后台运算

你可能感兴趣的:(java)