建议设置最大堆大小?

时间:2017-03-21 18:16:46

标签: java garbage-collection jvm heap

许多建议都很陈旧。 Java中有关Heap和GC的一些变化。

我之前发现建议设置过高的最大堆大小会影响性能,使其变得更糟。所以也可能设置太低的值。

不设置最大堆大小将使用系统默认值,大约是其总内存的1/4。对于我的计算机,它将为我的总内存的JVM分配8GB。

我正在使用Java 7引入的G1GC,并在运行时应用-XX:+ UseG1GC。

很难找到适合Max Heap Size的一种尺寸。我正在处理的应用程序可以从小到大扩展,具体取决于它的组成(非常动态并在运行时确定)。我已经看到一些应用程序实例不需要超过1GB的Max Heap,但其他实例可以从更大的尺寸中获益。将Java Web Start中的Max Heap设置为4GB甚至2GB会导致运行32位的客户端出现问题(Java和/或操作系统,以及那些人确实存在)。

是否有任何点使用Java 7或8设置Max Heap Size? JVM将使用可用的内容,GC将在已使用的堆和已提交的头之间工作。或者GC是否在所有已使用和最大堆之间工作?

1 个答案:

答案 0 :(得分:0)

  

是否有任何点使用Java 7或8设置Max Heap Size?

如果JVM与其他也需要ram的应用程序共享操作系统。

  

JVM将使用可用的内容,GC将在已使用的堆和已提交的头之间工作。或者GC是否在所有已使用和最大堆之间工作?

根据配置,GC可能会或可能不会保留在实际使用的堆的范围内。在某些情况下,它们可以极大地扩大堆大小,以尝试满足吞吐量或暂停时间目标。因此,限制堆提供了更可预测的堆大小,可能以吞吐量,延迟为代价,或者 - 如果大小不正确 - OOM。