繁体   English   中英

什么时候不使用 G1GC 垃圾收集器?

[英]When not to use G1GC garbage collector?

我研究了可用于 JVM 的各种垃圾收集器之间的差异。 这是解释它们之间主要区别的答案: https ://stackoverflow.com/a/54619838/5345646

这里对 G1GC 说:

它是低暂停/服务器风格的 gc,主要用于大堆(> 4Gb)。

我们有一台总内存为 4 GB 的机器,分配给 JVM 的堆大小为 1 GB。 我想了解这是否会给我们带来任何问题,或者 G1GC 会正常工作。

以下总结基于:


  • 如果您对 GC 暂停时间完全不感兴趣,请使用串行收集器(如果您只有一个核心)或并行收集器(如果您有多个核心)。

  • 如果您需要较短的暂停时间(很有可能),请使用 G1 收集器。

  • 如果您需要超低的暂停时间,并且/或者您有一个非常大的堆,请使用 Z 收集器。

从 Java 14 开始,旧的 CMS 收集器已被删除。


请注意,如果您指定暂停时间和/或吞吐量目标,您可以将 GC 的选择和调整留给 JVM。 当您不了解自己在做什么时,这可能比手动选择和调整 GC 风险小。

此处描述了这种“基于行为的调整”方法及其优势。


您问:

我们有一台总内存为 4 GB 的机器,分配给 JVM 的堆大小为 1 GB。 我想了解这是否会给我们带来任何问题,或者 G1GC 会正常工作。

我们不能告诉你它是否会正常工作。 这将取决于您的应用程序行为的各个方面以及您的期望。 例如,如果您的应用程序遇到它们,您会关心哪些“问题”。 我建议您从“基于行为的调优”开始,然后看看它对您有什么帮助。

另外,请注意,对于应用程序而言,设置过小的最大堆大小将不会很好地结束……无论您选择哪种 GC。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM