我收到java.lang.OutOfMemoryError: PermGen space
,在分析hprof
后,我发现了
One instance of "org.apache.jasper.compiler.JspRuntimeContext" loaded by
"org.jboss.mx.loading.UnifiedClassLoader3 @ 0x772dd7f80"
occupies 8,30,89,712 (29.32%) bytes.
The memory is accumulated in one instance of
"java.util.concurrent.ConcurrentHashMap$Segment[]" loaded by
"<system class loader>"
使用Jboss服务器。
在JVM HeapDump: The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$Segment找到一个类似的人 (但与tomcat有关)
这个问题的原因/解决方案是什么?告诉我是否应该提供更多信息。
答案 0 :(得分:1)
通过使用eclipse IDE,您可以更改VM参数
double click on the server > open Lunch Configuration > Arguments > VM Arguments
并在VM Arguments字段中的两行后面附加
-Xms256m -Xmx1024m -XX:+DisableExplicitGC -Dcom.sun.management.jmxremote
-XX:PermSize=256m -XX:MaxPermSize=512m
它一定会解决你的问题
答案 1 :(得分:1)
如果您在辅助Eclipse应用程序中遇到疑问错误,则在ini中添加-XX:MaxPermSize = 512m将不会有帮助。您需要进入调试或运行configuration-&gt;参数并在VM参数中添加该部分。我还增加了其他内存限制:
-Dosgi.requiredJavaVersion = 1.5 -Xms120m -Xmx2048m -XX:MaxPermSize = 1024m