2010-09-13 53 views
0

从远程机器执行时,我的可执行摇摆客户端会抛出内存异常。但是,使用以下命令从命令行执行客户端(增加堆空间)将起作用。执行摇摆客户端时出现内存不足错误

java -XMx128m -Xms128m -jar myclient.jar 

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

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

回答

2

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

2

我不认为有一个标准的方式来指定的内存设置在之内的应用程序; Java需要启动正确的设置。带有清单的jar文件是由java加载的,后者已经启动。

然而,您可以使用安装程序,请参阅this SO question,这暗示了NCIS。您也可以在Windows上寻找链接(在Windows上)或bat文件/ shell脚本。或者也许是Nexus使用的起始类型。我做了一些Google搜索,发现JSW

因此,简言之,你的选择似乎是:

  • NCIS
  • 安装程序一样JSW
  • shell脚本和批处理文件
  • 链接文件或类似的包装(在概念上类似于脚本/ bat文件)

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

+0

InstallAnywhere。 – 2010-09-13 19:29:33

2

你也可以使用像launch4j的包装,这将使大多数操作系统的可执行文件:ES,并允许您指定VM选项

+0

看起来像一个很好的跨平台解决方案。 – trashgod 2010-09-13 19:58:50

2

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

+0

哇,我不知道这些信息 - 谢谢! – aperkins 2010-09-15 17:00:37

+0

@aperkins:不客气! Mac应用程序只是一个名字以'.app'结尾的目录。你甚至可以用'ant来构建它:http://robotchase.svn.sourceforge.net/viewvc/robotchase/trunk/build.xml?revision=66&view=markup – trashgod 2010-09-15 17:22:54

+0

这很有趣,因为我知道,我从来没有想过关于这样做。令人惊讶的是,大脑有时会错过这些明显的联系。 – aperkins 2010-09-15 17:49:16

相关问题