为什么JVM程序在较小的堆大小设置下运行得更快?

时间:2013-04-30 02:50:05

标签: java jvm

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

1 个答案:

答案 0 :(得分:3)

从Oracle JVM上的文档中,注释说

  

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

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

link