JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景
发布时间:2024年01月02日
JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景:
-
Serial GC(串行收集器)
- 特点:单线程执行,对新生代进行垃圾回收时采用复制算法(Copying),在老年代可能使用标记-压缩或标记-清除算法。
- 算法:新生代 - 复制算法;老年代 - 可能是标记-压缩或标记-清除(取决于具体配置和JVM版本)。
- 适用场景:客户端模式下的Java应用,或者内存较小的服务器环境,强调快速简单且CPU资源有限。
-
Parallel GC(并行收集器,也称为吞吐量收集器Throughput Collector)
- 特点:多线程并行执行,对新生代使用复制算法,在老年代可能使用标记-压缩算法。
- 算法:新生代 - 并行复制算法;老年代 - 标记-压缩算法。
- 适用场景:适用于多核处理器机器,追求高吞吐量,可以接受较长时间STW的应用。
-
CMS (Concurrent Mark Sweep) 收集器
- 特点:并发标记清除算法,主要用于老年代,目标是在低延迟下运行,减少Stop-The-World的时间。
- 算法:并发标记-清除(Concurrent Mark-Sweep)。
- 适用场景:对响应时间敏感的服务端应用,需要尽量降低停顿时间,但可能产生内存碎片。
-
G1 (Garbage-First) 收集器
- 特点:全局并发标记和局部并发整理,将堆划分为多个Region,按需进行回收,目标是可预测的暂停时间,并且避免了全堆扫描。
- 算法:整体上结合了复制和标记-压缩的思想,实现了混合式的垃圾回收策略。
- 适用场景:大型堆(如超过约6GB以上)、长期服务应用,要求停顿时间可控且尽可能短。
-
ZGC (Z Garbage Collector)
- 特点:设计目标为任何大小堆上的停顿时间不超过10ms,使用了颜色指针、读屏障等技术,实现并发标记与并发压缩。
- 算法:并发标记-压缩,使用染色指针技术来跟踪对象引用关系。
- 适用场景:对停顿时间有严格要求的大规模数据处理系统,尤其适合云环境和其他需要低延时的场景。
-
Shenandoah
- 特点:类似于ZGC,同样致力于极低的停顿时间,通过并发压缩和原地更新引用等技术实现。
- 算法:并发标记-压缩,具有独特的“并发转移”阶段,可以在不暂停应用的情况下移动对象。
- 适用场景:与ZGC相似,适用于对响应时间和停顿时间有苛刻要求的应用。
文章来源:https://blog.csdn.net/SisinRyu/article/details/135343892
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!