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

问题描述 投票:0回答:1

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

G1GC 的说法是:

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

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

java garbage-collection jvm g1gc
1个回答
9
投票

以下总结基于:


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

  • 如果您需要较短的暂停时间(概率较高),请使用 G1 收集器。

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

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


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

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


你问:

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

我们无法告诉您效果是否良好。这取决于应用程序行为的各个方面以及您的期望。例如,如果您的应用程序遇到哪些“问题”,您会担心这些问题。我建议从“基于行为的调整”开始,看看它会给你带来什么。

最后,设置对于应用程序来说太小的最大堆大小

不会有好结果......无论你选择什么GC。

© www.soinside.com 2019 - 2024. All rights reserved.