0

を取得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: メモリは "java.util.concurrent.ConcurrentHashMap$Segment (ただし tomcat に関連) の 1 つのインスタンスに蓄積されます)

この問題の原因/解決策は何ですか? さらに情報を提供する必要があるかどうか教えてください。

4

2 に答える 2

1

セカンダリ Eclipse アプリケーションで問題のエラーが発生する場合、ini に -XX:MaxPermSize=512m を追加しても解決しません。デバッグまたは実行構成->引数に移動し、その部分を VM 引数に追加する必要があります。また、他のメモリ制限を増やしたので、次のようにしました。

-Dosgi.requiredJavaVersion=1.5 -Xms120m -Xmx2048m -XX:MaxPermSize=1024m

于 2014-06-17T10:55:17.850 に答える
1

Eclipse IDE を使用すると、VM 引数を変更できます。

double click on the server > open Lunch Configuration > Arguments > VM Arguments

VM引数フィールドに2行以下を追加します

-Xms256m -Xmx1024m -XX:+DisableExplicitGC -Dcom.sun.management.jmxremote
-XX:PermSize=256m -XX:MaxPermSize=512m

それは確かにあなたの問題を解決します

于 2014-06-17T10:48:22.183 に答える