【问题标题】:Difference in JVM heap size allocation between Netbeans 7.0.1 and 7.1?Netbeans 7.0.1 和 7.1 之间 JVM 堆大小分配的差异?
【发布时间】:2012-05-02 06:23:51
【问题描述】:

我有一个使用 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 下正常运行它,但想知道是否有人对此有解决方案。看起来应该很容易解决,但我只是忽略了一些东西?

感谢您的宝贵时间。

【问题讨论】:

    标签: java jvm heap-memory netbeans-7.1


    【解决方案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 替换为您实际打算使用的版本):

    ...
    # 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. 确保您的项目->属性->库->Java 平台设置为您要使用的 64 位 JDK。

    【讨论】:

    • 是的,你让我找到了解决方案。我已经安装了指向 Java 7 jdk 的 7.0.1。在开发中,我使用项目属性恢复到 JDK 6。我必须去检查我的 7.0.1 etc/netbeans.conf 文件才能弄清楚,但是当我安装 7.1 时,我的大脑在想“指向 jdk 6,因为这是你一直在使用的”,所以我的 7.1 conf 指向 1.6虽然我的 7.0.1(working) 指向 1.7,但我在项目中使用的是 1.6。
    猜你喜欢
    • 2019-01-16
    • 2015-10-18
    • 2012-11-06
    • 2012-12-07
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    相关资源
    最近更新 更多