Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java堆大小:设置太大时出错_Java_Heap Memory - Fatal编程技术网

Java堆大小:设置太大时出错

Java堆大小:设置太大时出错,java,heap-memory,Java,Heap Memory,我有一个基本上需要大量内存的程序。然而,由于某种原因,当我试图将最大堆空间设置为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 Jav

我有一个基本上需要大量内存的程序。然而,由于某种原因,当我试图将最大堆空间设置为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四处理器

已安装RAM:8.00 GB

Java版本1.6.0


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

可能的情况是,虽然您的操作系统是64位的,但JVM不是。打开一个命令行并键入
java-version
将为您提供详细的版本信息,这将指示您安装的JVM是32位还是64位版本

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

用于堆空间

-XX:MaxPermSize=64m

您使用的是JRE for Windows还是Windows x64?类似:我知道您说过您有8GB的RAM,但错误文本与“您使用的堆比可用内存大”错误匹配。我认为这可能是JVM的局限性,但我仍在研究它。我的java版本说:java版本“1.6.0_21”java(TM)SE运行时环境(build 1.6.0_21-b07)java HotSpot(TM)客户端VM(build 17.0-b17,混合模式,共享)我不知道这是32位还是64位。查看JVM信息。你能详细说明一下吗?运行java-XX:MaxPermSize=64m-Xmx1583m[my program]仍然会给出相同的错误。-1
-XX:MaxPermSize
用于永久生成。它的大小与堆的其他部分分开计算。啊,似乎安装64位JDK是可行的!问题解决了!谢谢:)很高兴听到这个消息。另外,我还没有意识到32位JVM没有提到它是32位的版本(64位版本实际上说它是64位的),很抱歉!