문제

EJB와 함께 엔터프라이즈 앱이 있습니다. 앱의 총 크기는 34 mg입니다. 앱을 배포 할 때 모든 것이 정상적이지만 재배치하면 총로드 된 클래스의 수가 증가합니다. 이 정보를보기 위해 VisualVM을 사용하고 있습니다. 그렇다면 그것이 어떻게되어야하는지 또는 메모리 누출입니다. 이 문제를 해결하는 방법? 감사

도움이 되었습니까?

해결책

클래스 로더 누출이 있습니다!

일반적으로 응용 프로그램을 배포 할 때 어느 Javaee Application Server (Glassfish 포함) 인 Application Server는 애플리케이션을 위해 특별히 새 클래스 로더를 만듭니다. 응용 프로그램이 초기화되고 실행되면 해당 클래스 로더가 새 클래스를로드하여 영구 메모리에 배치됩니다. PermGen 지역.

응용 프로그램이 배치되지 않으면 해당 클래스 로더는 쓰레기 수집되어야하지만 때로는 언급이 지속되기 때문에 발생하지 않습니다. 때를 재배치하십시오 응용 프로그램 인 응용 프로그램 서버는 이전과 동일한 동작을 거치지 만 이제는 메모리가 적습니다.

이에 대한 자세한 내용은 프랭크 키예프블로그 게시물이 호출되었습니다 클래스 로더 누출 그리고 후속 조치 클래스 로더 누출을 수정하는 방법.

다른 팁

Visual VM은 NetBeans에 포함 된 "Profiler"도구의 독립형 에디션입니다.

따라서 메모리 누출을 감지하려면 NetBeans Profiler의 문서를 읽어야합니다.

다음은 시작할 수있는 몇 가지 링크입니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top