如何配置JVM堆内存大小在jvm达到Xmx选项设置的最大堆大小后增加

时间:2016-03-30 09:51:55

标签: java memory garbage-collection heap-memory

我们要求总应用程序jvm内存太高并且根据输入数据集而变化。因此,我们不知道使用-Xmx命令行选项设置的最大堆大小。所需的总内存大于默认的最大堆大小(总物理内存的1/4)。

当我们没有提供任何GC人机工程学命令行参数时,内存在9-9.5 GB之后不会增长(系统中的总物理内存为38GB)。并且应用程序将在此时陷入困境。

如果我们将Xmx值赋予20 GB,则应用程序正在运行。但我们不确定最大堆大小值,因为它可以根据输入数据进行更改。 请告知如何处理此案件。我们有没有选择将堆内存增加到超出Xmx值?谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

尝试将-Xmx与-Xms一起使用。为-Xms提供所需的最低值(20GB)和-Xmx以及操作系统的最大可能值。

答案 1 :(得分:0)

由于内存最初没有超过9-9.5GB,

-Xms设为9 GB

并设置 - Xmxmaximum available physical memory - 1 or 2 GB,如果没有其他进程正在运行(30 GB for 32 GB RAM machine

除了这些内存设置之外,您还可以微调垃圾收集算法。

如果CMS-Xms具有相同的值,则

Xmx有效。

对于较大的堆,G1GC非常有效。您可以为最小和最大堆提供不同的值,如果您正确微调相关参数,它可以正常工作。

看看相关的SE问题:

Java 7 (JDK 7) garbage collection and documentation on G1

Selecting a collector article