【问题标题】:Java heap size: error when setting it too largeJava堆大小:设置太大时出错
【发布时间】:2011-03-28 11:05:57
【问题描述】:

我有一个基本上需要大量内存的程序。但是,由于某种原因,当我尝试将最大堆空间设置为 1.5GB 以上时,java 给了我一个错误。也就是运行

java -Xmx1582m [my program]

没关系,但是

java -Xmx1583m [my program]

给出错误

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

我在 Windows 命令行和 Eclipse 中都遇到了同样的错误。

这是我的系统配置:

Windows 7(64 位)

英特尔酷睿 2 四核 CPU

安装的内存:8.00 GB

Java 版本 1.6.0

奇怪的是我只能设置 1.5GB 内存,即使我运行的是 64 位操作系统和 8 GB RAM。有没有办法解决这个问题?

【问题讨论】:

  • 您使用的是适用于 Windows 还是 Windows x64 的 JRE?
  • 我知道您说您有 8GB 的​​ RAM,但错误文本与“您使用的堆比可用内存大”错误相匹配。我认为这可能是 JVM 的限制,但我仍在研究它。
  • 我的 java -version 说:java 版本 "1.6.0_21" Java(TM) SE 运行时环境 (build 1.6.0_21-b07) Java HotSpot(TM) Client VM (build 17.0-b17, mixed模式,共享)我不知道这是 32 位还是 64 位。
  • 查看this question 获取 JVM 信息。

标签: java heap-memory


【解决方案1】:

可能的情况是,当您的操作系统是 64 位时,您的 JVM 不是。打开命令行并输入 java -version 会为您提供详细的版本信息,该信息应表明您安装的 JVM 是 32 位还是 64 位版本。

64 位 JVM 应该没有更高的内存限制问题。

【讨论】:

  • 啊,看来安装64位JDK可以了!问题解决了!谢谢:)
  • 很高兴听到这个消息。另外,我没有意识到 32 位 JVM 并没有用-version 提到它是 32 位的(64 位版本实际上说它是 64 位的),对此感到抱歉!
【解决方案2】:

用于堆空间

-XX:MaxPermSize=64m

【讨论】:

  • 您能详细说明一下吗?运行 java -XX:MaxPermSize=64m -Xmx1583m [my program] 仍然给出同样的错误。
  • -1 -XX:MaxPermSize 用于永久生成。它的大小与堆的其余部分分开计算。
猜你喜欢
  • 2021-06-03
  • 1970-01-01
  • 2023-04-10
  • 2019-02-17
  • 1970-01-01
  • 2018-04-14
  • 1970-01-01
  • 2012-01-31
  • 2011-06-14
相关资源
最近更新 更多