2013-04-14 59 views
1

好的,我一直在用一隻手工具來幫助維護一臺託管在一臺計算機上的大量遊戲服務器。我正在做的是從python腳本中啓動一個.bat文件。該bat文件將服務器設置爲最大內存和這種性質。我用下面的函數打開並運行.bat文件。當試圖通過python腳本啓動一個minecraft服務器時出現內存問題

def StartServer(path,file): 
    if file not in MK.keys(): 

     l = Popen(file, cwd=path) 
     MK[file]=l 
     stdout, stderr = l.communicate() 
    else: 
     MK[file].terminate() 

這個函數被調用的兩種方式 1的方式是啓動程序之一。

thread.start_new_thread(StartServer, (path,File,)) 

2日關閉程序

StartServer(path,File) 

startserver的看到再入並終止指定的程序...... ,這對於需要很少的RAM,像一個bat文件,例如程序的偉大工程

@echo Hello world. 
@pause 

但是當試圖分配更多的RAM,用於java程序如,

@ECHO OFF 
SET BINDIR=%~dp0 
CD /D "%BINDIR%" 
"%ProgramFiles%\Java\jre7\bin\java.exe" -Xmx4096M -Xms4096M -jar Minecraft_RKit.jar user:password 
PAUSE 

我收到來自BAT文件的內存錯誤,如下所示。這是從蝙蝠文件不是從蟒蛇方

Invalid mat heap size: -Xmx4096M 
The specified size exceeds the maximum representable size. 
Error: Could not create java virtual machine. 
Error: A fatal exception has occurred. Program will exit. 
Press any key to continue . . . 

注:我更喜歡使用python和bat文件,提前感謝您!

+0

只是猜測,你運行的是32位Python,所以'%ProgramFiles%'指向32位Java? –

回答

0

您正試圖啓動一個32位JVM,給它的堆大小對於32位體系結構來說太大了。對於32位JVM,最大堆大小小於3Gb。實際限制取決於操作系統(它決定了應用程序有多少地址空間可用)以及JVM使用了多少非堆內存。

減少最大堆大小或切換到64位JVM(和64位操作系統)。

+1

64位電腦蝙蝠運行良好當運行manuly – user1849106

+0

是。您最有可能也使用64位JVM。 –

相關問題