增加内存密集型应用程序的 JVM 最大堆大小

新手上路,请多包涵

我需要运行一个使用超过 2GB 内存的 Java 内存密集型应用程序,但我在增加堆最大大小方面遇到了问题。到目前为止,我已经尝试了以下方法:

  • 设置-Xmx 参数,例如-Xmx3000m。此方法在创建 JVM 时失败。根据我在谷歌上搜索到的内容,看起来 -Xmx 必须小于 2GB。

  • 使用 -XX:+AggressiveHeap 选项。当我尝试这种方法时,我收到“内存不足”错误,提示堆大小为 1273.4 MB,即使我的计算机有 8GB 内存。

是否有另一种方法可以尝试增加 JVM 的最大堆大小?以下是计算机规格的摘要:

  • 操作系统:Windows 7(64 位)
  • 处理器:英特尔酷睿 i7 (2.66 GHz)
  • 内存:8 GB
  • java-版本:
 java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)

原文由 Alceu Costa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 701
2 个回答

在 32 位模式下使用 JVM 时,可以分配的最大堆大小为 1280 MB。所以,如果你想超越它,你需要在 64 模式下调用 JVM。

您可以使用以下内容:

 $ java -d64 -Xms512m -Xmx4g HelloWorld

在哪里,

  • -d64:将启用 64 位 JVM
  • -Xms512m:将初始堆大小设置为 512 MB
  • -Xmx4g:将最大堆大小设置为 4 GB

您可以根据需要调整 -Xms 和 -Xmx (YMMV)

关于 JVM 性能调整的非常好的资源,可能需要查看:http: //java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html

原文由 mohitsoni 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题