2013-10-15 53 views
0
Error occurred during initialization of VM. 
Could not reserve enough space for object heap. 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit. 

運行返回錯誤BAT文件具有以下命令:運行從蟒蛇一個bat文件,而直接從CMD

java -cp stanford-corenlp-3.2.0.jar;stanford-corenlp-3.2.0-models.jar;xom.jar;joda-time.jar;jollyday.jar -Xmx3g edu.stanford.nlp.pipeline.StanfordCoreNLP -props props.properties -filelist filelist.txt 

它從cmd窗口工作,沒有錯誤!

我有以下Python代碼:

import os 
import subprocess 

os.chdir('C:/Users/Christos/Documents/stanford-corenlp-full-2013-06-20/') 

p = subprocess.Popen(r'start cmd /c run_mouskos.bat', shell=True) 

p.wait() 

print 'done' 

我也試過,沒有運氣從蟒蛇執行bat文件的各種其他方式。我怎樣才能沒有錯誤地運行它?

+0

你有沒有試過直接在'Popen'調用中提供路徑? – LostAvatar

+0

是否直接從Python運行java命令(繞過批處理文件)實現了什麼? – misha

+1

我已經嘗試了兩件事,但我有同樣的錯誤。 – user2120596

回答

0

嘗試明確設置堆大小:看Could not reserve enough space for object heap

這個設置可以也可以受到環境變量 - 你應該在打印批處理文件中的變量(我想在Windows上set命令做到這一點)。這將允許您查看在您嘗試的兩種情況下變量是否相同。

當然,您需要從批處理腳本中捕獲輸出(或使其不可見)以執行比較。

+0

我把下面的代碼放在bat文件的'set'中JAVA_OPTS = -Xms512m -Xmx512m -XX:MaxPermSize = 256m'並且仍然不運行。'set'我檢查了兩個環境變量,它們是相同的從包含python設置和django的Python cmd中獲得:'DJANGO_SETTINGS_MODULE = python_test.settings'其中python_test是包含該程序的項目。是否通過Django服務器運行? – user2120596

+0

因此,您在Web應用程序中運行此項目?還是它是一個獨立的應用程序? – misha

+1

這是一個獨立的應用程序 – user2120596

1

我最近有這個問題。我正在運行一個由uWSGI提供服務的Django應用程序。我實際上運行的uWSGI進程的as-limit參數設置爲512MB。在深入研究之後,我發現應用程序使用子進程運行的每個進程都將保持與uWSGI進程相同的OS限制。

將as-limit的值提高到1GB後,我無法再現此問題。

也許這可能會幫助你