执行swing客户端时java内存不足错误

时间:2010-09-13 19:11:49

标签: java memory heap

我的可执行程序swing客户端从远程计算机执行时抛出内存不足异常。但是,使用以下命令从命令行执行客户端(增加堆空间)可以正常工作。

java -XMx128m -Xms128m -jar myclient.jar

我不希望远程用户通过命令行使用我的客户端,如上所示。那么,我可以在构建可执行文件时设置此堆空间吗?我正在使用Eclipse的Fat Jar Plug-In来创建我的可执行jar。

此外,有没有办法为客户端计算机(Windows / Mac / Linux)设置Java堆空间的默认值?

4 个答案:

答案 0 :(得分:2)

虽然我不知道在个别操作系统中设置默认设置的方法,但我可以告诉您命令行是-X命令的唯一选择。我们在项目中解决这个问题的方法是为他们提供Windows安装程序,或者为特定操作系统构建脚本。对于安装程序,我们使用了NSIS,它似乎运行得很好。

答案 1 :(得分:2)

我认为没有一种标准方法可以从应用程序中指定内存设置; java需要启动正确的设置。带有清单的jar文件由java加载,该文件已经开始了。

然而,您可以使用安装程序,请参阅this SO question,其中显示NCIS。您还可以在Windows上获取链接(在Windows上)或bat文件/ shell脚本。或者也许是Nexus使用的启动器。我做了一些谷歌搜索,发现JSW

因此,总而言之,您的选择似乎是:

  • NCIS
  • 这样的安装程序
  • JSW
  • 这样的包装器
  • shell脚本和bat文件
  • 一个链接文件或一些这样的(概念上类似于脚本/ bat文件)

我想我会先看看JSW,因为像Nexus这样的知名软件似乎都在使用它。我不知道它是否适用于桌面应用程序。但试着,你会发现:)

答案 2 :(得分:2)

您还可以使用类似launch4j的包装器,它将为大多数操作系统生成可执行文件,并允许您指定VM选项

答案 3 :(得分:2)

Mac OS X :文章Bringing your Java Application to Mac OS X Part 1Part 2Part 3说明了如何在Mac OS应用程序包中嵌入JAR。您可以在应用程序的属性列表Info.plist中指定运行时参数,如Java Info.plist Key Reference for Mac OS X中所述。