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

2022-08-31 10:55:27

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

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

  • 使用 -XX:+AggressiveHeap 选项。当我尝试这种方法时,我收到一个“内存不足”错误,该错误表明堆大小为1273.4 MB,即使我的计算机具有8GB内存也是如此。

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

  • 操作系统:视窗 7(64 位)
  • 处理器: 英特尔酷睿 i7 (2.66 GHz)
  • 内存: 8 GB
  • java -version:
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)

答案 1

在 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


答案 2

Oracle 获取 64 位 JVM。


推荐