【问题标题】:Why does JVM program run much faster with a Smaller heap size settings?为什么 JVM 程序在较小的堆大小设置下运行得更快?
【发布时间】:2013-04-30 10:55:26
【问题描述】:

我正在对一个 JVM 应用程序进行基准测试,该应用程序在磁盘 IO 和 CPU 上都施加了非常重的负载。

通常我使用 4G 最大/最小堆大小对其进行基准测试,整个基准测试套件平均需要 73 秒才能运行。

今天我很好奇,只给了它 1G 的最大/最小堆大小,令人惊讶的是,整个基准套件平均只需 62 秒即可运行。

所以我想知道为什么 JVM 在较小的堆大小下性能更好?

补充说明:

环境:

java version "1.7.0_19"
OpenJDK Runtime Environment (fedora-2.3.9.1.fc17-x86_64)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

Linux ____ 3.8.4-102.fc17.x86_64 #1 SMP Sun Mar 24 13:09:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

【问题讨论】:

    标签: java jvm


    【解决方案1】:

    从关于 Oracle JVM 的文档中,注释说

    接下来,您可以尝试减少使用的堆数量。更大的堆 将导致垃圾收集暂停增加,因为有更多 堆扫描。

    这也是你使用的 GC 算法的功能。例如增量 GC 可能会给出完全不同的数字。 (试试-Xincgc 看看你的号码)

    link

    【讨论】:

    • 谢谢你,很抱歉我没有提到我的 JVM 环境。 OpenJDK 有类似的行为吗?
    • @Howard Guo - 这真的是 JRE 的功能而不是 JDK。我希望 Oracle 和 OpenJDK 在这里有类似的行为。 GC 等共享相同的代码。
    猜你喜欢
    • 2010-10-20
    • 2017-05-15
    • 1970-01-01
    • 2012-07-18
    • 2011-01-16
    • 2016-03-06
    • 2021-02-27
    • 2012-01-10
    • 2010-12-03
    相关资源
    最近更新 更多