java 5が永久世代を収集し、アプリがうまく動作するのに、Java 7が永久世代のアプリを収集できず、 java.lang.OutOfMemoryError: PermGen が発生する理由を知っている人はいますか?
アプリはループ内で jython 式の評価を行います。1 回の反復は約 1 回です。5秒 ループの本体は次のようになります。
PythonInterpreter py = new PythonInterpreter();
py.set("AI", 1);
((PyInteger)py.eval(expr)).getValue()
Java 7 および Java 5 で実行されているアプリ用に撮影された jvisual vm のスクリーンショット。
どちらの場合も、同じパラメーターが使用されます。
-Xmx700m
-XX:MaxPermSize=100m
-XX:+HeapDumpOnOutOfMemoryError
-Xloggc:"C:\Temp\gc.log" -XX:+PrintGCDetails -XX:-TraceClassUnloading -XX:+PrintClassHistogram