글쎄, 당황 스럽네 ...jconsole을 사용할 때 Java 힙 힙 파일의 위치는?
Windows 박스에서 Java 메모리 누수를 찾기 위해 Eclipse Memory Analyzer를 사용하기 시작했습니다. 1 단계는 힙 덤프 파일을 얻는 것입니다. 이렇게하려면 Eclipse 내에서 Java (javaw.exe) 프로세스를 시작하고 jconsole을 사용하여 연결합니다. 그런 다음 jconsole MBeans 탭에서 dumpHeap 버튼을 클릭합니다. 이 작업을 처음 수행했을 때 힙 덤프 파일을 만들었지 만 이름이나 위치를 제공하지 않는다는 팝업이 나타났습니다. 내가 연결되어있는 동안 다른 javaw.exe가 프로세스를 다시 dumpHeap을 할 때마다 지금, jconsole를 말한다 :
Problem invoking dumpHeap : java.io.IOException: File exists
물론
은 이름이나 경로를 제공하지 않습니다. 어디있을 수 있니?"hprof"또는 "java_pid"또는 "heapdump"가 포함 된 파일에 대해 C : 드라이브 (cygwin 명령 줄 도구 사용)를 검색했지만 그럴듯한 것을 찾지 못했습니다. 필자는 Windows 검색을 사용하여 마지막 날에 변경된 Eclipse 작업 공간의 모든 파일을 찾습니다.
저는 Sun Java 1.6 JVM을 사용 중이며 -XX : HeapDumpPath가 설정되어 있지 않습니다.
업데이트 (2010 년 4 월 28 일) : 내 원래 힙 파일 위치는 jconsole에 의해 결정되어야합니다.이 도구는 힙 덤프를 트리거했습니다. JVM의 힙 덤프 위치는 트리거하는 힙 덤프 (예 : OutOfMemoryException)에만 적용해야합니다.
jvisualvm을 사용하는 Matt B의 제안은 오래된 jconsole을 훨씬 더 유용하게 대체 할 수있게 도와줌으로써 내 문제를 훌륭하게 해결합니다. 그것은 어떤 유형의 객체가 가장 많고 가장 많은 메모리를 보유하고 있는지 보여주는 좋은 메모리 프로파일 러를 가지고 있습니다. 그리고 시간이 지남에 따라 실제 메모리 사용량을 보여주는 모니터가 있습니다. 힙 덤프를 요청하면 파일 이름도 알려줍니다! 이클립스 메모리 분석기는 모든 세부 사항을 제공합니다.
jvisualvm을 시도해보십시오. 훨씬 더 좋은 인터페이스를 가지고 있습니다. –
IDE가 유용하지 않을 때까지는 –
@matt b : 절대적으로 옳고, 파일 이름 게시 힙 덤프를 알려줍니다. C : \ DOCUME ~ 1 \ ferrans \ LOCALS ~ 1 \ Temp \ visualvm.dat \ localhost-4180 \ heapdump-1272470561431.hprof 이것을 답으로 추가하면 받아 들일 것입니다. –