2012-01-23 72 views
1

最近,我們開始看到這個異常在運行中自動測試模式下的遊戲框架:如何提高測試運行的堆大小/ FirePhoque在playframework

~ testcode...                    Exception in thread "JS executor for [email protected]" java.lang.OutOfMemoryError: Java heap space 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.propertyAccess(Parser.java:2656) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.memberExprTail(Parser.java:2527) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.memberExpr(Parser.java:2502) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.unaryExpr(Parser.java:2376) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.mulExpr(Parser.java:2299) 

我在谷歌搜索似乎表明這可能是由於頁面有點大。我監視了FirePhoque進程,它似乎只限於128M堆大小左右。

有沒有官方的方式來增加堆大小?

請注意,增加播放運行時的堆大小不會有幫助。

謝謝。

回答

2

您可以編輯控制它的python腳本。增加Play的堆大小的原因是因爲Firephoque運行在不同的虛擬機中(如果我正確讀取代碼!)

打開$ {PLAY_HOME} /framework/pym/play/commands/base.py並找到自動測試() 方法。在那裏,大約一半的時間,是#Run FirePhoque。在這裏是運行Firephoque的命令生成器 - 你可以通過改變

java_cmd = [app.java_path(), '-classpath', cp_args, '-Dapplication.url=%s://localhost:%s' % (protocol, http_port), '-DheadlessBrowser=%s' % (headless_browser), 'play.modules.testrunner.FirePhoque'] 

java_cmd = [app.java_path(), '-Xmx512M -classpath', cp_args, '-Dapplication.url=%s://localhost:%s' % (protocol, http_port), '-DheadlessBrowser=%s' % (headless_browser), 'play.modules.testrunner.FirePhoque'] 
+0

感謝您的幫助這裏增加堆大小 - 這是正確的地方,但它並沒有被工作只是在那裏取代它。相反,我做了以下事情:java_cmd = [app.java_path(),'-classpath',cp_args,'-Xmx512M','-Dapplication.url =%s:// localhost:%s'... –

+0

D'oh , 你是對的。對於那個很抱歉 :) –