Java 7이 영구 생성 세대를 수집하지 못하는 이유는 누구나 알 수 있습니까? PermGen, Java 5는 영구 생성 및 어플리케이션 실행을 수집하는 반면 java.lang.OutOfMemoryError : PermGen 잘?Java 7이 Java 5에서 수집 한 영구 생성을 수집하지 못했습니다.
응용 프로그램은 루프에서 자이 썬 표현식을 평가하므로 하나의 반복이 약합니다. 5 초. 루프의 몸과 같이 보인다 :의
PythonInterpreter py = new PythonInterpreter();
py.set("AI", 1);
((PyInteger)py.eval(expr)).getValue()
스크린 샷 jvisual VM 동일한 매개 변수가 사용되는 두 가지 경우 모두 응용 프로그램이 자바 7 자바 5
에서 실행하기위한 촬영 :
-Xmx700m
-XX:MaxPermSize=100m
-XX:+HeapDumpOnOutOfMemoryError
-Xloggc:"C:\Temp\gc.log" -XX:+PrintGCDetails -XX:-TraceClassUnloading -XX:+PrintClassHistogram
JConsole 또는 다른 도구에 로그인하여 gc 알고리즘을 확인 했습니까? – kosa
JVM 시작 설정이 다를 수 있습니다. 귀하의 신청서에 이상한 것이 있습니까? 핫로드 코드, 커스텀 클래스 로더 등? – Andy
GC 사용자는 항상 GC 성능을 조정하여 성능을 향상시키기 위해 노력하고 있으므로 이러한 차이가 있는지는 놀랍지 않습니다. 내 __guess__는 이제 100Mb가 아닌 700Mb에 초점을 맞추고 있으며이를 제어하기위한 노력을 기울이기보다는 영구 메모리를 확장하게됩니다. 그들은 PermGen을위한 좋은 숫자보다는 오히려 고성능 및 700Mb 안에 체재에 집중했다. – RalphChapin