【问题标题】:Heap Space Issue outside Netbeans IDENetbeans IDE 之外的堆空间问题
【发布时间】:2015-04-21 17:24:11
【问题描述】:

编辑:我最终将两个建议的答案结合起来,从而回答了我自己的问题,它是下面接受的一个,希望这对未来的其他人有所帮助!

我在 Windows 7 上运行 32 位 Java 1.8.0_40。

我在 Netbeans 8.0 中创建了一个程序,并将 VM 选项调整为 -Xms512m -Xmx2048m。

该程序在 Netbeans IDE 环境中运行良好,但是在尝试在 Netbeans 之外运行该程序时,我遇到了堆空间内存不足错误。

编辑:我通过 Netbeans 在编译时为项目创建的 .jar 文件启动程序。

我已进入 Java 控制面板并将相同的“-Xms512m -Xmx2048m”信息应用于运行时参数。我仍然遇到堆空间内存不足错误。

有什么建议吗?我可以从这里去哪里?我是否错过了确保 Netbeans 之外的运行时环境中有足够内存的步骤?

【问题讨论】:

  • 您是否尝试在运行应用程序时将 VM 选项直接传递给 JVM?
  • 不,我没有在我的代码中明确传递任何 VM 选项。我一直在努力寻找一种明确的方法来做到这一点,而不是通过命令行。
  • 拜托,您能告诉我们您在 Netbeans 之外启动应用程序的确切方式吗?是一些 shell 脚本,还是一个自动执行的 JAR 文件,还是任何其他方式?
  • @Jorge_B 已编辑以将其添加到主要问题中以供其他人查看。现在,我只是通过 Netbeans 在编译代码时在 dist 文件夹中创建的 .jar 文件启动程序。

标签: java ide out-of-memory java-8 netbeans-8


【解决方案1】:

您在 netbeans 中使用的 VM 选项也可以在命令行上使用,即

java -Xms512m -Xmx2048m  -jar yourprg.jar

还有更多JVM options 可用。

【讨论】:

  • 我曾尝试使用此命令行选项,但它对我不起作用,我的 .jar 存储在网络计算机上。我不需要在本地机器上安装 .jar 吗?编辑:即使将 .jar 和 lib 文件夹放在我的桌面上,我也收到“错误:无法访问 jarfile”消息。
  • 这些 jvm 选项适用于在本地计算机上运行的 JVM。 jar 的来源无关紧要,因为它会加载并运行并使用 JVM 所在的内存。除非我们遗漏了一些明显的东西,并且您正在远程登录/ssh 到远程机器并从那里运行 JVM。
  • 嗯...不,据我所知,我没有做那样的事情。我们必须将所有项目保存在共享的本地服务器上,但我们没有做任何特别的事情来访问它们,没有 SSH 或任何只是通过驱动器号连接的东西。我不需要对 .jar 或类似的东西做一个完全限定的地址吗?
【解决方案2】:

由于您正在构建一个独立的 JAR 文件,因此在您的 JAR 中包含此类选项似乎没有一种干净的方法(有些人问过这个问题 herehere 没有明确的答案)。在您的情况下,我的解决方案通常是提供一个带有正确 -Xms 和 -Xmx 参数的小 shell 脚本,以及我的 JAR 文件。

【讨论】:

  • 当您说“shell 脚本”时,您是指 .bat 文件吗?
  • 是的,这是我的想法。它可能适合您的问题吗?这取决于您将软件部署到哪里(没有理由不能编写 .bat 和标准 .sh 版本的启动器,以防万一)
  • 我会试一试并报告。
【解决方案3】:

我做了两个答案的组合。结果是我必须使用引号括起来的完全限定名称来执行命令,并且由于其他人将使用该程序,因此我能够创建一个 .bat 文件来执行此操作。 最终的 .bat 文件最终看起来像这样:

java -Xms512m -Xmx2048m -jar "T:\Netbeans Projects\DataLoader\dist\DataLoader.jar"

感谢 Jorge_B 和 Sanj 的帮助!希望这对将来的其他人有所帮助!

【讨论】:

    猜你喜欢
    • 2010-10-15
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2014-06-05
    • 2023-04-03
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多