我的可执行swing客户端在从远程机器执行时抛出内存不足异常。但是,使用以下命令从命令行执行客户端(增加堆空间)是可行的。
java -XMx128m -Xms128m -jar myclient.jar我不希望远程用户通过如上所示的命令行使用我的客户端。那么,我可以在构建可执行文件时设置这个堆空间吗?我正在使用Eclipse的Fat jar插件创建我的可执行Jar。
另外,有没有办法为客户机(Windows/Mac/Linux)设置java堆空间的默认值?
发布于 2010-09-14 03:17:19
虽然我不知道在单个操作系统中设置默认值的方法,但我可以告诉您,命令行是-X命令的唯一位置。在我们的项目中,我们绕过这个问题的方法是给他们一个windows的安装程序,或者为他们构建一个特定操作系统的脚本。对于安装程序,我们使用了NSIS,它似乎工作得很好。
发布于 2010-09-14 03:20:51
我不认为有一种标准的方法可以在应用程序中指定内存设置;java需要以正确的设置启动。带有manifest的jar文件由java加载,此时java已经启动。
不过,您也可以使用安装程序,请参阅建议使用NCIS的this SO question。你也可以使用链接(在Windows上)或bat文件/ shell脚本在Windows上。或者可能是Nexus使用的那种启动器。我用谷歌搜索了一下找到了JSW。
所以,总而言之,你的选择似乎是:
我想我会从看JSW开始,因为一些著名的软件,比如Nexus,似乎就在使用它。不过,我不知道它是否能很好地与桌面应用程序配合使用。但是试一试,你就会发现:)
发布于 2010-09-14 03:56:55
您还可以使用像launch4j这样的包装器,它将为大多数OS:es创建可执行文件,并允许您指定VM选项
https://stackoverflow.com/questions/3703587
复制相似问题