Java 8 Update 60减少可用堆内存

时间:2015-08-24 17:59:53

标签: java windows memory netbeans-7

我在拥有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

但我仍然遇到同样的错误。

1 个答案:

答案 0 :(得分:1)

在Windows下,32位JVM的最大堆大小约为2GB,并且有一种方法可以将其高达3GB。如果你已经在使用32GB RAM运行,那么你的Windows 7必须是64位,而你最好只升级到64位JVM。

我已经看到从一个Java版本到下一个版本的可用内存更改。他们还调整了从一个版本到下一个版本的默认JVM内存大小。最后,可用堆的数量随JVM内部运行的线程数而变化。由于可用于所有目的的最大内存为2GB,因此运行的更多线程会减少堆剩余的数量。如果他们在Java 8 JVM中添加了一些线程,那么这可以解释为什么可用的堆更少。