2011-09-07 74 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。

相关问题