2010-09-13 51 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

相關問題