收集器 | 收集对象和算法 | 收集器类型 | 说明 | 适用场景 |
---|---|---|---|---|
Serial | 新生代,复制算法 | 单线程 | 进行垃圾收集时,必须暂停所有工作线程,直到完成;(stop the world) | 简单高效; 适合内存不大的情况; |
ParNew | 新生代,复制算法 | 并行的多线程收集器 | ParNew垃圾收集器是Serial收集器的多线程版本 | 运行在server模式下的虚拟机中首选 |
Parallel Scavenge 吞吐量优先收集器 | 新生代,复制算法 | 并行的多线程收集器 | 类似ParNew,更加关注吞吐量, 达到一个可控制的吞吐量;jdk默认的新生代垃圾回收器 | 本身是Server级别多CPU机器上的默认GC方式,良好的响应速度能够提升 用户的体验,如web后台系统 |
Serial Old | 老年代,标记整理算法 | 单线程 | 与Serial一样 | Client模式下虚拟机使用 |
Parallel Old | 老年代,标记整理算法 | 并行的多线程收集器 | Parallel Scavenge收集器的老年代版本,为了配合Parallel Scavenge 的面向吞吐量的特性而开发的对应组合;jdk默认的老生代垃圾回收器 | 在注重吞吐量以及CPU资源敏感的场合采用 |
CMS | 老年代,标记清除算法 | 并发收集器 | 尽可能的缩短垃圾收集时用户线程停止时间;缺点在于: 1.内存碎片 2.需要更多cpu资源 3.需要更大的堆空间 | 重视服务的响应速度、系统停顿时间和用户体验的互联网网站或者B/S系统。 互联网后端目前cms是主流的垃圾回收器; |
G1 | 跨新生代和老年代 | 并行与并发收集器 | JDK1.7才正式引入,采用分区回收的思维,基本不牺牲吞吐量的前提 下完成低停顿的内存回收 | 面向服务端应用的垃圾回收器 |
垃圾回收器
最新推荐文章于 2024-08-22 23:25:32 发布