2012-03-27 52 views
1

我在512M vps上運行play2。如何在512M vps中運行`play` - 它報告`無法爲對象堆預留足夠的空間?

它可以創建一個新的應用程序:

play new test 

但不能啓動test項目:

cd test 
play 

它報告這樣的錯誤:

[[email protected] test]$ play 
Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 
[[email protected] test]$ 

經過一番研究, ,我發現play2會調用play-2.0/framework/build,並且build有以下s ettings:

我試圖修改play-2.0/play外殼,從:

java ${DEBUG_PARAM} -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled 
    -XX:MaxPermSize=384M -Dfile.encoding=UTF8 -Dplay.version="${PLAY_VERSION}" 
    -Dsbt.ivy.home=`dirname $0`/../repository -Dplay.home=`dirname $0` 
    -Dsbt.boot.properties=`dirname $0`/sbt/sbt.boot.properties 
    -jar `dirname $0`/sbt/sbt-launch.jar "[email protected]" 

我們可以看到,Xms爲512M時,VPS擁有它沒有足夠的內存。

所以我將其更改爲:

java ${DEBUG_PARAM} -Xms112M -Xmx300M -Xss1M 
    -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=84M -Dfile.encoding=UTF8 
    ... 

這一次,該錯誤信息更改:

Error occurred during initialization of VM 
Cannot create VM thread. Out of system resources. 

我該怎麼辦?

+0

實際上,play可以運行在512M vps。後來我發現了這個問題:我用的vps提供了假內存,它顯示512M,實際上只有不到200M。 (vps是非託管和便宜的,沒有交換,但我最好不要寫它的名字)。如果您遇到同樣的問題,請在vps – Freewind 2012-09-06 02:42:47

回答

2

我在本地構建和開發。然後運行「play dist」創建一個包含啓動腳本的分發。我使用Fabric部署到我的512MB VPS,並且沒有任何內存問題。

1

遊戲臺& &目標/啓動-Xmx384m

5

假設你正在運行的Sun HotSpot虛擬機,這樣運行:

_JAVA_OPTIONS="-Xmx384m" play <your commands> 

,你會得到你所需要的。當VM啓動時,它將包含_JAVA_OPTIONS環境變量的內容以及您指定的任何其他命令行Java選項。你會知道它被拾起,因爲你會在控制檯看到以下消息:

Picked up _JAVA_OPTIONS: -Xmx384m

shell命令上面定義的變量只對shell命令的其餘部分的執行。如果你想讓它更耐用,你可以這樣說

export _JAVA_OPTIONS="-Xmx384m" 

,並把在的.bash_profile或.profile等

的_JAVA_OPTIONS環境變量記錄不完整,我不知道它有多廣泛的支持,但我很確定它可以在Linux,BSD *(如Mac OS)上工作,並且......我不知道還有什麼。

+1

上進行一些測試。您也可以使用'JAVA_OPTS',如'JAVA_OPTS =「 - Xms2m -Xmx16m」play start'。不同的是,'JAVA_OPTS'是Play特定的,並被添加或替換'_JAVA_OPTIONS'。它適用於2.1.4,可能不適用於早期版本。 – 2013-09-19 18:13:34

2

另一種方法是使用下面的命令(當你不使用遊戲DIST但在服務器上藏漢安裝框架奏效,也許它有獨立包裝的作品太多,但我沒有測試過):

play "start 6000" -Xms64m -Xmx128m -server 

「啓動6000」將開始我面臨着同樣的問題,但我找到了原因和解決方案的服務器偵聽端口6000

4

這是一個java參數。我做一個簡單的檢查:

java -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M -version 

這並不工作,但

java -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled 

確實工作!和

java -Xms512M -Xmx512M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M 

也起作用。

您必須按照以下方式修改build.bat:在最大內存大小或更改最大永久大小。

相關問題