[HotSpot 虚拟机垃圾收集调优指南-JavaSE11-笔记]-5-当前可用的5个垃圾收集器简介

5-当前可用的5个垃圾收集器

5.1 串行收集器

串行收集器使用单个线程来执行所有垃圾收集工作,这使得它相对高效,因为线程之间没有通信开销

它最适合单处理器机器,因为它不能利用多处理器硬件,尽管它可以在多处理器上用于具有小数据集(最多大约 100 MB)的应用程序。在某些硬件和操作系统配置上默认选择串行收集器,或者可以使用选项显式启用 -XX:+UseSerialGC

5.2 并行收集器

并行收集器也称为吞吐量收集器,它是类似于串行收集器的分代收集器。串行收集器和并行收集器之间的主要区别在于并行收集器有多个线程用于加速垃圾收集

并行收集器适用于在多处理器多线程硬件上运行的中型大型数据集的应用程序。您可以使用该**-XX:+UseParallelGC**选项启用它。

并行压缩是一项使并行收集器能够并行执行主要收集的功能。如果没有并行压缩,主要收集使用单个线程执行,这会显着限制可伸缩性。-XX:+UseParallelGC如果已指定选项,则默认启用并行压缩。您可以使用该 -XX:-UseParallelOldGC 选项禁用它。

5.3 并发收集器

并发标记扫描 (CMS) 收集器和垃圾优先 (G1) 垃圾收集器是两个主要并发的收集器。大多数并发收集器同时对应用程序执行一些昂贵的工作。

G1 垃圾收集器:这种服务器式收集器适用于具有大量内存多处理器机器。它以高概率满足垃圾收集暂停时间目标,同时实现高吞吐量

在某些硬件和操作系统配置上默认选择 G1,或者可以使用**-XX:+UseG1GC**.

CMS 收集器:此收集器适用于喜欢较短的垃圾收集暂停并且能够与垃圾收集共享处理器资源的应用程序。

使用该选项**-XX:+UseConcMarkSweepGC**启用 CMS 收集器

JDK 9 起,CMS 收集器已被弃用

5.4 Z 垃圾收集器

Z 垃圾收集器 (ZGC) 是一种可扩展的低延迟垃圾收集器。ZGC 并发执行所有昂贵的工作,而不会停止应用程序线程的执行。

ZGC 适用于需要低延迟(小于 10 毫秒的暂停)和/或使用非常大的堆(数 TB)的应用程序。您可以使用该**-XX:+UseZGC**选项启用。

JDK 11 开始,ZGC 可作为实验性功能使用

5.5 如何选择收集器

除非您的应用程序有相当严格的暂停时间要求,否则首先运行您的应用程序并允许 VM 选择收集器。

如有必要,调整堆大小以提高性能。如果性能仍未达到您的目标,则使用以下准则作为选择收集器的参考

  • 如果应用程序有一个小数据集(最多大约 100 MB),则选择带有配置的串行收集器-XX:+UseSerialGC。

  • 如果应用程序将在单个处理器上运行并且没有暂停时间要求,则选择带有选项的串行收集器-XX:+UseSerialGC。

  • 如果 (a) 峰值是应用程序性能是第一优先级 并且 (b) 没有暂停时间要求或一秒或更长的暂停是可以接受的,那么让 VM 选择收集器或选择并行收集器-XX:+UseParallelGC。

  • 如果响应时间比整体吞吐量更重要,并且垃圾收集暂停必须保持在大约一秒以内,那么选择一个大多数并发的收集器,使用-XX:+UseG1GC或-XX:+UseConcMarkSweepGC。

  • 如果响应时间是一个高优先级,并且/或者您正在使用一个非常大的堆,那么选择一个完全并发的收集器-XX:UseZGC。

这些指南仅提供了选择收集器的选择的参考,因为性能取决于堆的大小、应用程序维护的实时数据量以及可用处理器的数量和速度。

如果推荐的收集器没有达到预期的性能,那么首先尝试调整堆生成大小以满足预期的目标。如果性能仍然不足,请尝试不同的收集器:使用并发收集器来减少暂停时间,并使用并行收集器来增加多处理器硬件的整体吞吐量

技术咨询支持,可以扫描微信公众号进行回复咨询
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋小生的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值