Java 7 не может собрать постоянное поколение, которое собирает java 5

Кто-нибудь знает, почему java 7 не может собрать постоянное поколение приложения, что приводит к ошибке java.lang.OutOfMemoryError :PermGen, а java 5 собирает постоянное поколение, и приложение работает хорошо?

Приложение выполняет оценку выражений jython в цикле, одна итерация составляет прибл. 5 сек. Тело цикла имеет вид:

PythonInterpreter py = new PythonInterpreter();
py.set("AI", 1);
((PyInteger)py.eval(expr)).getValue()

Скриншоты jvisual vm, сделанные для приложения, работающего в Java 7 и Java 5.

В обоих случаях используются одни и те же параметры:

-Xmx700m 
-XX:MaxPermSize=100m
-XX:+HeapDumpOnOutOfMemoryError
-Xloggc:"C:\Temp\gc.log" -XX:+PrintGCDetails  -XX:-TraceClassUnloading -XX:+PrintClassHistogram 

java 7 java 5

10
задан Miloslav Skacel 14 August 2012 в 16:12
поделиться