繁体   English   中英

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

[英]How to configure the JVM heap memory size to be increased after jvm reached the maximum heap size set by the Xmx option

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

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

如果我们将Xmx值设置为20 GB,则应用程序正在运行。 但是我们不确定最大堆大小值,因为它可以根据输入数据进行更改。 请告知在这种情况下如何进行。 我们是否可以选择将堆内存增加到超过Xmx值? 谢谢您的帮助。

尝试将-Xmx和-Xms一起使用。 为您的操作系统提供-Xms最小要求的值(20GB),为-Xmx提供最大可能的值。

由于最初的内存不会超过9-9.5GB,

-Xms设置为9 GB

并设置Xmx作为maximum available physical memory - 1 or 2 GB如果没有其他进程在运行,则为maximum available physical memory - 1 or 2 GB30 GB for 32 GB RAM machine

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

如果-XmsXmx值相同,则CMS有效。

对于较大的堆, G1GC非常有效。 您可以为最小堆和最大堆使用不同的值,并且如果您对相关参数进行了适当的微调,它就可以正常工作。

看看相关的SE问题:

G1上的Java 7(JDK 7)垃圾收集和文档

选择收藏者文章

暂无
暂无

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

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