常用的垃圾收集器有哪些?
- 1. Serial 收集器(复制算法)
新生代单线程收集器,标记和清理都是单线程,优点是简单高效。是 client 级别默认的 GC 方式,可以通过 -XX:+UseSerialGC 来强制指定。
- 2. Serial Old 收集器(标记-整理算法)
老年代单线程收集器,Serial 收集器的老年代版本。
- 3. ParNew 收集器(停止-复制算法)
新生代收集器,可以认为是 Serial 收集器的多线程版本,在多核 CPU 环境下有着比 Serial 更好的表现。
- 4. Parallel Scavenge 收集器(停止-复制算法)
并行收集器,追求高吞吐量,高效利用 CPU。吞吐量一般为 99%, 吞吐量= 用户线程时间 / (用户线程时间+GC线程时间)。适合后台应用等对交互相应要求不高的场景。是 server 级别默认采用的GC方式,可用 -XX:+UseParallelGC 来强制指定,用 -XX:ParallelGCThreads=4 来指定线程数。
- 5. Parallel Old 收集器(标记-整理算法)
Parallel Old 收集器的老年代版本,并行收集器,吞吐量优先。
- 6. CMS(Concurrent Mark Sweep)收集器(标记-清除算法)
高并发、低停顿,追求最短 GC 回收停顿时间,cpu 占用比较高,响应时间快,停顿时间短,多核 cpu 追求高响应时间的选择。
CMS 是英文 Concurrent Mark-Sweep 的简称,是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动 JVM 的参数加上“-XX:+UseConcMarkSweepGC”来指定使用 CMS 垃圾回收器。
CMS 使用的是标记-清除的算法实现的,所以在 GC 的时候会产生大量的内存碎片,当剩余内存不能满足程序运行要求时,系统将会出现 Concurrent Mode Failure,临时 CMS 会采用 Serial Old 回收器进行垃圾清除,此时的性能将会被降低。
- 7. G1
G1 收集器在后台维护了一个优先列表,每次根据允许的收集时间,优先选择回收价值最大的 Region(这也就是它的名字 Garbage-First的由来。
评论(3)
Parallel Old 应该是Parallel Scavenge的老年代版本
Parallel Old 收集器使用的是”标记—整理”算法
已修改,谢谢哦