[英]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 GB
( 30 GB for 32 GB RAM machine
)
除了这些内存设置之外,您还可以微调垃圾回收算法。
如果-Xms
和Xmx
值相同,则CMS
有效。
对于较大的堆, G1GC
非常有效。 您可以为最小堆和最大堆使用不同的值,并且如果您对相关参数进行了适当的微调,它就可以正常工作。
看看相关的SE问题:
和
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.