【问题标题】:How to configure the JVM heap memory size to be increased after jvm reached the maximum heap size set by the Xmx option如何配置 JVM 堆内存大小在 jvm 达到 Xmx 选项设置的最大堆大小后增加
【发布时间】:2016-07-18 05:53:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: java memory garbage-collection heap-memory


    【解决方案1】:

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

    将-Xms 设置为 9 GB

    如果没有其他进程正在运行,则将 -Xmx 设置为 maximum 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-01-01
        • 1970-01-01
        • 2016-06-22
        • 2010-11-29
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 2012-07-18
        相关资源
        最近更新 更多