2012-03-27 2 views
1

permgen 메모리 누수 버그와 관련이 있습니다. 필자는 실행중인 시스템을 검사 할 수있는 능력이 매우 제한되어 있으므로 소스 코드를 배척해야합니다. 검색 영역을 줄이기 위해서 (아마도) permgen 영역에서 메모리를 소비하는 메소드 만 찾고 싶습니다.메서드가 permgen 메모리에 기여하는지 확인합니다.

예. 나는 확실히 호출되는 루트 메소드를 가지고있다. 그 세트에서 나는 probaly가 permgen 영역 (즉, String.intern()이 호출되는 등)에서 메모리를 소비하는 메소드에 대한 경로를 찾아야합니다. 현재 두 가지 문제, 즉 메서드가 permgen 공간을 사용하는지 확인하는 방법과 두 번째 방법을 결정하는 방법 - 실행 경로를 따르기 위해 바이트 코드를 어떻게 처리 할 수 ​​있습니까?

감사합니다. 사전에 알려 주시면 감사하겠습니다!

답변

2

더 나은 방법은 메모리 덤프를 취한 다음 Eclipse Memory Analyzer을 사용하여 PermGen 영역에서 공간을 차지하는 클래스 정의와 문자열을 조사하는 것입니다.

PermGen 영역을 스 와이프 할 수 있도록 -XX : + CMSClassUnloadingEnabled -XX : + CMSPermGenSweepingEnabled 플래그를 추가 할 수도 있습니다.