【问题标题】:how to force operating system to give java more memory?如何强制操作系统给java更多的内存?
【发布时间】:2026-02-09 00:20:04
【问题描述】:

java jar 文件和内存有问题。

我使用 netbeans 6.7 开发一个应用程序,这个应用程序需要更多的内存来运行,因为它会转换另一个文件。每当此应用程序转换 6-10 mb 文件时,它就会崩溃。所以我设置了 netbeans VM Options : -Xms32m -Xmx256m 并且应用程序可以毫无问题地转换 6-10mb 文件。

我清理并构建项目,以便它可以制作我的应用程序的 jar 文件。我在我的电脑上运行 jar 并使用 jconsole 来监控内存。应用程序使用的最大内存显示为 256 mb。但是每当我将它移动到其他计算机时,它会在 jconsole 上显示 65-66 mb,并且在转换 6-10 mb 文件时应用程序会崩溃。所以我需要使用命令提示符:java -jar -Xmx256m myjar.jar 以最大内存执行 jar

为什么会发生这种情况,在我的计算机上最大内存显示为 256 mb,但在另一台计算机上显示为 65-66 mb? 我可以强制另一台计算机为我的应用程序提供额外的最大内存吗?

感谢您的回答。我很抱歉我的英语不够好。如果大家觉得我的问题难以理解,请告诉我。

最好的问候

丹尼

ps:仅供参考,我用于开发应用程序的计算机有 2gb 内存,而我测试的其他计算机有 1-2gb 内存。

【问题讨论】:

    标签: java netbeans jar operating-system memory-management


    【解决方案1】:

    您回答了自己的问题。必须使用 -Xmx 选项启动应用程序。

    【讨论】:

    • 感谢您的回答。是否可以自动执行此操作?因为我已经在 netbeans 中设置了 -Xmx 选项。它可以在我的计算机上运行(jconsole 显示最大内存 256mb),但在其他计算机上不起作用(jconsole 显示最大内存 65-66mb)。
    • @Denny:我不认为你可以把这些信息放在罐子里。您必须编写单独的 .bat 或 .sh 文件来运行您的程序。
    • @tulskiy 谢谢你的回答。是的,我已经制作了一个 run.bat 文件,以防万一我找不到答案。它可以工作(当我在其他计算机上测试应用程序时,jconsole 显示最大内存 256mb),但这样会显示命令提示符。我可以隐藏它吗?
    【解决方案2】:

    我找到了替代方案,我们可以在命令提示符下使用:set _JAVA_OPTIONS=-Xms64m -Xmx128m。它使: java -Xms64m -Xmx128m 成为默认堆内存大小。我知道了here

    这种方式给我一个满意的结果。但是,如果您有更好的方法,请不要犹豫发布它。无论如何,谢谢您的回复。

    【讨论】:

      【解决方案3】:

      IIRC,客户端虚拟机过去默认为 64MB 堆。您必须使用-Xmxgenerate a launcher for your jar

      【讨论】:

      • 感谢您的回答。我已经在 netbeans 中设置了 -Xmx,但它只适用于我的计算机。我会在您提供的链接中寻找答案,谢谢。
      【解决方案4】:

      使用您期望在 NetBeans IDE 中使用的内存量来配置“运行应用程序”属性中的设置。

      【讨论】:

      • 感谢您的回答。如果“运行应用程序”是 netbeans 项目属性“运行”,我已经这样做了。它可以在我的计算机上运行,​​但在另一台计算机上似乎没有任何效果。
      • 请检查您在运行应用程序时设置的属性是否在您将其移至另一台计算机时保留。
      最近更新 更多