2012-01-13 5 views
0

java 프로세스가 충돌하는 중입니다. 로그에 99 %의 perm 메모리가 도달했으나 최대 허용 gen 메모리가 128MB로 설정되어 있습니다. 최대 파마 메모리처럼 보이지 않습니다. 98 MBJava 프로세스가 충돌 함

jre 버전 - 1.6.

+0

99 %의 128MB로 가득 차 있다면 최대 퍼머 크기가 98MB라고 생각하는 이유는 무엇입니까? 최대 값을 256MB로 늘리면 어떻게됩니까? –

답변

0

파마 크기 -XX에 의해 제어되는 문제가있을 수 있습니다 무엇을 제안 :를 MaxPermSize 옵션을. 일반적으로 기본값은 -XX : MaxPermSize = 64m이며이를 늘릴 수 있습니다.

자세한 내용은 http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html을 참조하십시오.

+0

-XX : MaxPermSize 옵션입니다. 나는 여전히 196MB로 설정했다. 98 메가 바이트를 넘지는 않는다 ... 64 비트 자바 6.0에 특정 이슈가있다. – torahulpandey

+0

아마도 당신이 너무 많은 클론을로드하려고 시도하고 있음을 의미한다. JVM 옵션 -XX : + TraceClassLoading 및 -XX : + TraceClassUnloading을 사용하여 실시간으로로드/언로드되는 클래스를 확인하십시오. 앱에서 과도한 클래스 로딩에 대해 의문이있는 경우 이렇게하면 클래스가로드되는 위치와 위치를 정확하게 찾을 수 있습니다. –

2

perm gen 공간을 보려면 jvisualvm (Java 설치 폴더에 있음)을 사용하십시오. 어쩌면 그 공간에서 어떤 종류의 메모리 누수가있을 수 있습니다. 로드 된 클래스의 시계 번호입니다. 데스크톱 응용 프로그램인가 웹인가? Tomcat에 재배포하고 있습니까? (이것은 gen space 문제가 있습니다)?

+0

나는 시각적 인 vm을 통해 확인했다 ... 기억은 beyong 98를 증가시키지 않고 그 후에 충돌한다. ecrash report perm gen은 99 %에 도달했다. lunux에있는 창 해당 작업 f9 – torahulpandey

+0

jvisualvm의 Afer 응용 프로그램 init perm perm은 안정적인 수준에 도달하고 더 이상 증가하지 않습니다. 최대 허용 크기를 늘리려는 경우 예상보다 30 % 크게 만드십시오. 충돌은 어떻게 생겼지? 어떤 종류의 예외? Windows 프로세스가 중단 되었습니까? 시작 직후에 충돌이 발생합니까 아니면 시간이 오래 걸리나요? –