4

我正在对一个 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
4

1 回答 1

3

从 Oracle JVM 的文档中,注释说

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

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

关联

于 2013-04-30T02:54:20.837 回答