OutOfMemoryError 发生:播放框架中的 Java 堆空间
Posted
技术标签:
【中文标题】OutOfMemoryError 发生:播放框架中的 Java 堆空间【英文标题】:OutOfMemoryError occured : Java heap space in play framework 【发布时间】:2011-09-07 09:45:21 【问题描述】:我正在使用 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.<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
谁知道或者可能有同样的问题,请给我建议。
【问题讨论】:
您可以使用更多内存运行您的应用程序:play run your_app -Xss1m
您应该为Memory Leaks 分析您的应用程序 - 如果没有泄漏,您可以增加内存量
感谢 Jonas 和 olihoiz 的回答,它可能可以帮助我解决问题。
如果您得到的答案之一解决了您的问题,请点击复选标记接受它。
【参考方案1】:
一种快速的解决方法是增加 JVM 的内存(如何做到这一点取决于所使用的 JVM,Oracle 的 JVM 将支持 -Xmx...m
选项,其中 ... 表示以兆字节为单位的最大内存)。
JVM 最初可能获得的内存太少,如果不是这种情况,那么检查内存使用情况应该会有所帮助,例如使用 jmap(创建堆转储)和 jhat(分析堆转储)。
【讨论】:
【参考方案2】:在 google-list 上,几个月前有人指出,groovy-template 引擎需要大量内存。我想你也有同样的问题。
【讨论】:
【参考方案3】:这也偶尔发生在我身上。 @Thomas 的回答是一个更好的解决方案,但如果您需要快速修复,只需关闭并重新启动 Play。
【讨论】:
以上是关于OutOfMemoryError 发生:播放框架中的 Java 堆空间的主要内容,如果未能解决你的问题,请参考以下文章
OutOfMemoryError:Java 堆空间。如何修复递归方法中发生的这个错误?
kapt 发生异常:java.lang.OutOfMemoryError: GC 开销限制超出
如果 java.lang.OutOfMemoryError 即将发生,请执行
线程“主”java.lang.OutOfMemoryError 中的异常:在 ArrayList 中添加值时发生 Java 堆空间错误 [重复]