发生了OutOfMemoryError:Play框架中的Java堆空间

我正在用java创建基于游戏的Web应用程序。 当我运行它时出现错误,出现以下错误:

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.(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.(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 

有人知道或者可能有同样的问题,请给我建议。

一个快速的解决方法是增加JVM的内存(如何完成取决于正在使用的JVM,Oracle的JVM将支持-Xmx...m选项,其中……表示以兆字节为单位的最大内存)。

JVM最初可能会得到太少的内存,如果不是这样,那么检查内存使用情况应该有所帮助,例如使用jmap(创建堆转储)和jhat(分析堆转储)。

在google-list上有几个月前有人指出,对于一些构造,groovy-template引擎需要大量内存。 我假设你有同样的问题。

偶尔也会发生这种情况。 @Thomas的答案是一个更好的解决方案,但如果您需要快速修复,只需关闭并重新启动Play。