gpt4 book ai didi

java - 关于在 Java 中关闭垃圾收集器

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:04:17 27 4
gpt4 key购买 nike

最近我听到 Kirk Pepperdine 谈到改变垃圾收集器以获得更好的性能——但这到底是什么意思,是什么让一个垃圾收集器比另一个更好或不同?

最佳答案

你问了两个问题:

更改 Java 中的垃圾收集器以获得更好的性能意味着什么?

这是一个很大的话题,和其他一些回复者一样,我敦促您阅读一些内容。我推荐Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning来自孙。以下信息主要来自那里。另一个答案中推荐的“涡轮增压”java 文章较旧。

简而言之,我们在运行 JVM 时拥有的众多选项之一是选择垃圾收集器,目前有以下三种:

  • 串行收集器(使用 -XX:+UseSerialGC 选项选择)- 它使用单个线程来完成所有收集工作,一切都在等待它发生。
  • 并行收集器(使用 -XX:+UseParallelGC 选项选择)- 这会并行进行次要收集(年轻代的),但在主要收集期间一切都在等待。
  • 并发收集器(使用 -XX:+UseConcMarkSweepGC 选项选择)- 这允许大多数收集操作在应用程序运行时发生。

是什么让一个垃圾收集器比另一个更好?

您的应用程序可以。每个垃圾收集器都有一个“最佳位置”——它是高级收集器的一系列应用程序配置文件。

首先,要知道 VM 非常擅长为您选择收集器,并且与大多数优化一样,在确定您的应用程序性能不佳以及垃圾收集之前,您不应该考虑事后猜测它可能是罪魁祸首。

在那种情况下,您必须问这些问题:1) 您的应用程序是在单处理器机器上运行还是在多处理器机器上运行? 2)你更关心“最小化暂停时间”,还是“最大化吞吐量”?也就是说,如果您必须在应用程序永不暂停但总体上完成的工作较少与总体上完成更多工作但不时暂停之间做出选择,您会选择哪个?

粗略地说,作为起点:

  • 处理器机器上,主要关注最小化暂停时间,您倾向于使用并发收集器(考虑启用增量模式)
  • 处理器机器上,主要关注最大化吞吐量,您倾向于使用并行收集器(考虑启用并行压缩)
  • 处理器机器上,具有小数据集(最多大约 100Mb),您倾向于使用串行收集器
  • 处理器机器上,主要关注最大化吞吐量,您倾向于使用串行收集器
  • 处理器机器上,主要关注最小化暂停时间,您倾向于使用并发收集器(考虑启用增量模式)

不过,VM 在为您选择收集器方面做得非常好,您最好不要覆盖它,除非并且直到您发现它对您的应用程序来说工作得不够好。

关于java - 关于在 Java 中关闭垃圾收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1533323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com