什么时候不使用 G1GC 垃圾收集器?
When not to use G1GC garbage collector?
我研究了可用于 JVM 的各种垃圾收集器之间的差异。这是解释它们之间主要区别的答案:
这里说 G1GC 是:
It's low pause / server style gc, mainly for large heap (> 4Gb).
我们有一台机器,总内存为 4 GB,分配给 JVM 的堆大小为 1 GB。我想了解这是否会给我们带来任何问题,或者 G1GC 是否会正常工作。
以下总结基于:
如果你对GC暂停时间完全不感兴趣,那么使用串行收集器(如果你只有一个核心)或并行收集器(如果你有多个核心)。
如果你需要低停顿时间(概率高),那么使用G1收集器。
如果您需要 ultra-low 次暂停,and/or 您有一个非常大的堆,请使用 Z 收集器。
从 Java 14 日起,旧的 CMS 收集器已被删除。
请注意,如果您指定 pause-time and/or 吞吐量目标,您可以将 GC 的选择和调整留给 JVM。当您不明白自己在做什么时,这可能比手动 select 调整和调整 GC 风险更小。
描述了这种“behavior-based 调整”方法及其优点 here。
您问的是:
We have a machine that has a total memory of 4 GB, and heap size allocated to JVM of 1 GB. I wanted to understand whether that would cause any issues for us, or would G1GC work out fine.
我们无法告诉您它是否会成功。这将取决于应用程序行为的各个方面以及您的期望。例如,如果您的应用程序遇到了哪些“问题”,您会关心这些问题。我建议先尝试“behavior-based 调整”,然后看看它能给你带来什么。
此外,请注意,为应用程序设置太小的最大堆大小将不会很好地结束......无论您使用哪种 GC select。
我研究了可用于 JVM 的各种垃圾收集器之间的差异。这是解释它们之间主要区别的答案:
这里说 G1GC 是:
It's low pause / server style gc, mainly for large heap (> 4Gb).
我们有一台机器,总内存为 4 GB,分配给 JVM 的堆大小为 1 GB。我想了解这是否会给我们带来任何问题,或者 G1GC 是否会正常工作。
以下总结基于:
如果你对GC暂停时间完全不感兴趣,那么使用串行收集器(如果你只有一个核心)或并行收集器(如果你有多个核心)。
如果你需要低停顿时间(概率高),那么使用G1收集器。
如果您需要 ultra-low 次暂停,and/or 您有一个非常大的堆,请使用 Z 收集器。
从 Java 14 日起,旧的 CMS 收集器已被删除。
请注意,如果您指定 pause-time and/or 吞吐量目标,您可以将 GC 的选择和调整留给 JVM。当您不明白自己在做什么时,这可能比手动 select 调整和调整 GC 风险更小。
描述了这种“behavior-based 调整”方法及其优点 here。
您问的是:
We have a machine that has a total memory of 4 GB, and heap size allocated to JVM of 1 GB. I wanted to understand whether that would cause any issues for us, or would G1GC work out fine.
我们无法告诉您它是否会成功。这将取决于应用程序行为的各个方面以及您的期望。例如,如果您的应用程序遇到了哪些“问题”,您会关心这些问题。我建议先尝试“behavior-based 调整”,然后看看它能给你带来什么。
此外,请注意,为应用程序设置太小的最大堆大小将不会很好地结束......无论您使用哪种 GC select。