Java Netbeans 7.0.1和7.1之间JVM堆大小分配的差异?

Java Netbeans 7.0.1和7.1之间JVM堆大小分配的差异?,java,jvm,heap,netbeans-7.1,Java,Jvm,Heap,Netbeans 7.1,我有一个使用Netbeans 7.0.1开发的java程序,用于解析和保存大型CSV文件。由于CSV文件的大小,我需要增加JVM的堆大小。在7.0.1中,我使用Netbeans中的Project->Properties->VM选项下的-Xmx4096m规范,将堆大小设置为在系统上使用8GB中的4GB。它在7.0.1中运行良好 现在我尝试在Netbeans 7.1中运行它,我从Netbeans得到以下输出 Could not create the Java virtual machine. Inv

我有一个使用Netbeans 7.0.1开发的java程序,用于解析和保存大型CSV文件。由于CSV文件的大小,我需要增加JVM的堆大小。在7.0.1中,我使用Netbeans中的Project->Properties->VM选项下的-Xmx4096m规范,将堆大小设置为在系统上使用8GB中的4GB。它在7.0.1中运行良好

现在我尝试在Netbeans 7.1中运行它,我从Netbeans得到以下输出

Could not create the Java virtual machine.
Invalid maximum heap size: -Xmx4096m
The specified size exceeds the maximum representable size.
Java Result: 1
当我遇到这个错误时,我没有改变Netbeans中的默认值

我想可能是在7.1中,他们在netbeans.config文件中“锁定”了堆大小,所以我去了那里

首先,我尝试了这个:

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-Xmx4906m -J-XX:PermSize=32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.zip.disableMemoryMapping=true"
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=4096m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.zip.disableMemoryMapping=true"
这使我在Netbeans启动屏幕上创建JVM弹出窗口失败

然后我试了一下:

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-Xmx4906m -J-XX:PermSize=32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.zip.disableMemoryMapping=true"
netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=4096m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.zip.disableMemoryMapping=true"
Netbeans似乎更喜欢这样,因为加载条将一直指向“完成加载模块”,但它只是挂在启动屏幕上。在杀死它之前,我让它在那里挂了5分钟

这对我来说并不是一个阻碍,因为我仍然可以在7.0.1下运行它,但我想知道是否有人能解决这个问题。似乎这应该是一个简单的解决办法,但我只是忽略了一些东西


谢谢您的时间。

看起来您是用32位java.exe安装了NetBeans,请在C:\Program Files(x86)\NetBeans 7.1\etc\或C:\Program Files\NetBeans 7.1\etc\中编辑NetBeans.conf\ 并确保上面写着(将jdk1.7.0_03替换为您实际打算使用的版本):

。。。
#JDK的默认位置,可以使用--jdkhome:
netbeans\u jdkhome=“C:\Program Files\Java\jdk1.7.0\u 03”
...
而不是

...
# Default location of JDK, can be overridden by using --jdkhome <dir>:
netbeans_jdkhome="C:\Program Files (x86)\Java\jdk1.7.0_03"
...
。。。
#JDK的默认位置,可以使用--jdkhome:
netbeans\u jdkhome=“C:\Program Files(x86)\Java\jdk1.7.0\u 03”
...
请注意,Windows中的“(x86)”表示32位,或者只需编辑项目并选择64位JVM即可。您可能需要将64位JVM添加到工具->Java平台。当然,如果您不使用Windows,具体情况会有所不同,但这仍然是一个32位与64位的问题

这种情况通常发生在有人想要使用较新的JVM,但他们不小心安装了32位版本而不是64位版本时。另外请注意:您可以将项目配置为在64位JVM中运行/调试,而NetBeans本身在32位JVM中运行,因此您实际上不必修改NetBeans.conf以使您的项目能够分配4GB

总之:

  • 确保已安装64位JDK
  • 确保64位JDK在NetBeans的Java平台中列出
  • 确保将项目->属性->库->Java平台设置为要使用的64位JDK

  • 是的,你让我想到了解决办法。我安装了指向Java7JDK的7.0.1。在开发过程中,我使用项目属性恢复到JDK 6。我不得不去检查我的7.0.1 etc/netbeans.conf文件来找出答案,但是当我安装7.1时,我的大脑在想“指向jdk 6,因为你一直在使用jdk 6”,所以我的7.1 conf指向1.6,而我的7.0.1(工作)指向1.7,尽管我在项目中使用了1.6。