我在拥有32 GB RAM的PC上使用Windows 7,并且刚刚接受了最新的Java 8更新(60)。在更新之前,我曾经能够在命令窗口中处理需要使用几GB内存的文件。现在,我得到
java.lang.OutOfMemoryError: Java heap space
运行的应用程序需要的内存比以前使用的内存少得多。
当我运行NetBeans时,我曾经能够将项目设置为使用1GB的内存 R-click:属性:运行并放置
-Xms1g
中的
VM Options
窗口。
现在,当我这样做并尝试运行程序时,我得到了
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Error occurred during initialization of VM
Could not reserve enough space for object heap
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
使用
时,我没有收到该错误-Xms900m
代替。因此,Java以某种方式减少了我可以使用的堆内存量。
我去了开始:控制面板:Java(32位):Java:查看
并放
-Xms4g
下
Runtime Parameters
但我仍然遇到同样的错误。
答案 0 :(得分:1)
在Windows下,32位JVM的最大堆大小约为2GB,并且有一种方法可以将其高达3GB。如果你已经在使用32GB RAM运行,那么你的Windows 7必须是64位,而你最好只升级到64位JVM。
我已经看到从一个Java版本到下一个版本的可用内存更改。他们还调整了从一个版本到下一个版本的默认JVM内存大小。最后,可用堆的数量随JVM内部运行的线程数而变化。由于可用于所有目的的最大内存为2GB,因此运行的更多线程会减少堆剩余的数量。如果他们在Java 8 JVM中添加了一些线程,那么这可以解释为什么可用的堆更少。