3

我有一个使用 Netbeans 7.0.1 开发的 java 程序来解析和保存大型 CSV 文件。由于 CSV 文件的大小,我需要增加 JVM 的堆大小。在 7.0.1 中,我使用 Netbeans 中 Project ->Properties -> VM Options 下的 -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 初始屏幕上创建 JVM 弹出窗口失败。

然后我尝试了这个:

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 下正常运行它,但想知道是否有人对此有解决方案。似乎它应该是一个简单的修复,但我只是忽略了一些东西?

谢谢你的时间。

4

1 回答 1

2

看起来您使用 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 替换为您实际打算使用的版本):

...
# Default location of JDK, can be overridden by using --jdkhome <dir>:
netbeans_jdkhome="C:\Program Files\Java\jdk1.7.0_03"
...

并不是

...
# Default location of JDK, can be overridden by using --jdkhome <dir>:
netbeans_jdkhome="C:\Program Files (x86)\Java\jdk1.7.0_03"
...

请注意,Windows 中的“(x86)”表示 32 位,或者只是编辑您的项目并选择 64 位 JVM。您可能必须将 64 位 JVM 添加到 Tools->Java Platforms。当然,如果您不使用 Windows,具体情况会有所不同,但这仍然是 32 位与 64 位的问题。

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

总之:

  1. 确保您已安装 64 位 JDK
  2. 确保您的 64 位 JDK 列在 NetBeans 的 Java 平台中
  3. 确保您的 Project->Properties->Libraries->Java Platform 设置为您要使用的 64 位 JDK。
于 2012-04-20T18:10:54.290 回答