문제

내가 개발중인 Java 응용 프로그램에서 메모리 '누출'을 얻었습니다. 주니트 테스트 스위트를 실행할 때 나는 무작위로 메모리 예외를 벗어납니다 (java.lang.outofMemoryError).

Java 애플리케이션의 힙을 검사하여 모든 힙을 사용하는 것이 무엇인지 확인하여 쓰레기를 수집 할 수있는 물체에 대한 참조를 유지할 수 있도록 어떤 도구를 사용할 수 있습니까?

도움이 되었습니까?

해결책

VisualVM은 가장 최근의 Java 릴리스에 포함되어 있습니다. 이것을 사용하여 힙 덤프를 만들고 그 안에있는 객체를 볼 수 있습니다.

또는 JMAP (JDK/Bin DIR에서)를 사용하여 HeepDump Commandine을 만들 수도 있습니다.

jmap -dump:format=b,file=heap.bin <pid>

이것을 사용하여 모든 객체의 빠른 히스토그램을 얻을 수도 있습니다.

jmap -histo <pid>

Eclipse 메모리 분석기를 추천 할 수 있습니다 (http://eclipse.org/mat) 힙 덤프의 고급 분석. 특정 객체 또는 객체 세트가 살아있는 이유를 정확히 알 수 있습니다. 다음은 메모리 분석기가 수행 할 수있는 작업을 보여주는 블로그 항목입니다. http://dev.eclipse.org/blogs/memoryanalyzer/2008/05/27/automated-heap-dump-analysy-finding-mory-leaks-with-one-click/

다른 팁

무료로 필요한 경우 시도하십시오 VisualVM

프로젝트의 설명에서 :

VisualVM은 명령 라인 JDK 도구 및 경량 프로파일 링 기능을 통합하는 시각적 도구입니다. 개발 및 생산 시간 사용을 위해 설계되었습니다.

이것은 꽤 오래된 질문입니다. 많은 사람들이 원래 대답을 받았기 때문에 Intellij를 사용하기 시작했을 것입니다. Intellij에는 메모리 사용을 표시 할 수있는 플러그인이 있습니다. JVM 디버거 메모리보기.

프로파일 러와 같은 것을 사용하십시오 Jprofiler 또는 YourKitProfiler

Jprofiler는 나를 위해 아주 잘 작동했습니다 ....

http://www.ej-technologies.com/products/jprofiler/overview.html

사용 일식 메모리 분석기

힙 덤프를 분석 할 때 기능 및 성능 및 가격 (무료 및 오픈 소스)에 가까운 도구를 알고있는 다른 도구는 없습니다.

GTK를 지원하는 시스템을 사용하는 경우 사용해 볼 수 있습니다. JMP.

Jrockit Mission Control Tools Suite의 일부인 메모리 누출 감지기를 사용해 볼 수 있습니다. JVM이 실행되는 동안 힙을 검사 할 수 있습니다. 항상 스냅 샷을 찍을 필요는 없습니다. 온라인으로 JVM에 연결 한 다음 쓰레기 수집간에 힙이 어떻게 변하는 지 확인할 수 있습니다. 또한 객체를 검사하고, 참조를 그래픽으로 따르며, 응용 프로그램이 현재 객체를 할당하는 곳에서 스택 추적을 얻을 수 있습니다. 다음은 간단합니다 소개.

이 도구는 개발에 무료로 사용할 수 있으며 다운로드 할 수 있습니다. 여기.

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