我的可执行程序swing客户端从远程计算机执行时抛出内存不足异常。但是,使用以下命令从命令行执行客户端(增加堆空间)可以正常工作。
java -XMx128m -Xms128m -jar myclient.jar
我不希望远程用户通过命令行使用我的客户端,如上所示。那么,我可以在构建可执行文件时设置此堆空间吗?我正在使用Eclipse的Fat Jar Plug-In来创建我的可执行jar。
此外,有没有办法为客户端计算机(Windows / Mac / Linux)设置Java堆空间的默认值?
答案 0 :(得分:2)
虽然我不知道在个别操作系统中设置默认设置的方法,但我可以告诉您命令行是-X命令的唯一选择。我们在项目中解决这个问题的方法是为他们提供Windows安装程序,或者为特定操作系统构建脚本。对于安装程序,我们使用了NSIS,它似乎运行得很好。
答案 1 :(得分:2)
我认为没有一种标准方法可以从在应用程序中指定内存设置; java需要启动正确的设置。带有清单的jar文件由java加载,该文件已经开始了。
然而,您可以使用安装程序,请参阅this SO question,其中显示NCIS。您还可以在Windows上获取链接(在Windows上)或bat文件/ shell脚本。或者也许是Nexus使用的启动器。我做了一些谷歌搜索,发现JSW。
因此,总而言之,您的选择似乎是:
我想我会先看看JSW,因为像Nexus这样的知名软件似乎都在使用它。我不知道它是否适用于桌面应用程序。但试着,你会发现:)
答案 2 :(得分:2)
您还可以使用类似launch4j的包装器,它将为大多数操作系统生成可执行文件,并允许您指定VM选项
答案 3 :(得分:2)
Mac OS X :文章Bringing your Java Application to Mac OS X Part 1,Part 2和Part 3说明了如何在Mac OS应用程序包中嵌入JAR。您可以在应用程序的属性列表Info.plist
中指定运行时参数,如Java Info.plist Key Reference for Mac OS X中所述。