2011-09-07 78 views
1

我正在用java創建基於播放的Web應用程序。當我運行它時出現以下錯誤的錯誤:發生OutOfMemoryError:播放框架中的Java堆空間

Execution exception (In /app/controllers/Application.java around line 12) 
OutOfMemoryError occured : Java heap space 

play.exceptions.JavaExecutionException: Java heap space 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:227) 
at Invocation.HTTP Request(Play!) 
Caused by: java.lang.OutOfMemoryError: Java heap space 
at java.util.Arrays.copyOfRange(Arrays.java:3209) 
at java.lang.String.<init>(String.java:215) 
at java.lang.StringBuffer.toString(StringBuffer.java:585) 
at java.io.StringWriter.toString(StringWriter.java:193) 
at play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:248) 
at play.templates.Template.render(Template.java:26) 
at play.mvc.results.RenderTemplate.<init>(RenderTemplate.java:24) 
at play.mvc.Controller.renderTemplate(Controller.java:657) 
at play.mvc.Controller.renderTemplate(Controller.java:637) 
at play.mvc.Controller.render(Controller.java:692) 
at controllers.Application.index(Application.java:12) 
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:540) 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:498) 
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:474) 
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:469) 
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:157) 
... 1 more 

任何人知道或可能有同樣的問題,請給我建議。

+0

您可以使用以下命令運行您的應用程序:'play run your_app -Xss1m' – Jonas

+0

您應該爲[內存泄漏]配置應用程序(http://java.sun.com/developer/technicalArticles/J2SE/monitoring/ ) - 如果沒有泄漏,你可以增加你的記憶量 – oliholz

+0

感謝Jonas和olihoiz你的答案,它可能可以幫助我解決問題。 – Sapardi

回答

3

一個快速的解決方法是增加JVM的內存(如何完成取決於正在使用的JVM,Oracle的JVM將支持-Xmx...m選項,其中......表示以兆字節爲單位的最大內存)。

JVM最初可能得到的內存太少,如果情況並非如此,那麼檢查內存使用情況應該有所幫助,例如,使用jmap(創建堆轉儲)和jhat(分析堆轉儲)。

1

在谷歌列表有幾個月前有人指出,與一些結構groovy模板引擎需要大量的內存。我假設你有同樣的問題。

0

偶爾也會發生這種情況。 @托馬斯的答案是一個更好的解決方案,但如果您需要快速修復,請關閉並重新啓動Play。

相關問題