2010-04-28 4 views
4

글쎄, 당황 스럽네 ...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을 훨씬 더 유용하게 대체 할 수있게 도와줌으로써 내 문제를 훌륭하게 해결합니다. 그것은 어떤 유형의 객체가 가장 많고 가장 많은 메모리를 보유하고 있는지 보여주는 좋은 메모리 프로파일 러를 가지고 있습니다. 그리고 시간이 지남에 따라 실제 메모리 사용량을 보여주는 모니터가 있습니다. 힙 덤프를 요청하면 파일 이름도 알려줍니다! 이클립스 메모리 분석기는 모든 세부 사항을 제공합니다.

+0

jvisualvm을 시도해보십시오. 훨씬 더 좋은 인터페이스를 가지고 있습니다. –

+0

IDE가 유용하지 않을 때까지는 –

+0

@matt b : 절대적으로 옳고, 파일 이름 게시 힙 덤프를 알려줍니다. C : \ DOCUME ~ 1 \ ferrans \ LOCALS ~ 1 \ Temp \ visualvm.dat \ localhost-4180 \ heapdump-1272470561431.hprof 이것을 답으로 추가하면 받아 들일 것입니다. –

답변

8

jvisualvm 시도해보십시오. 인터페이스가 훨씬 뛰어납니다.

JDK 버전 6 업데이트 7 이상부터는 Java VisualVM이 JDK와 번들로 제공됩니다. here을 참조하십시오.

+0

고마워,이게 내 문제를 해결하고 * 나 새로운 뭔가를 가르쳐 매우 유용합니다! –

2

언제든지 ProcessMonitor을 써서 쓸 곳을 확인할 수 있습니다. 과거에이 문제를 해결했습니다.

+0

@Chris : 흥미로운 조언을 드리겠습니다. –

4

는 썬 자바 SE6 JVM에 대한 docs에 따르면

힙 덤프 에 생성됩니다 기본적으로라는 파일이 java_pid < PID> .hprof는 VM

의 작업 디렉토리

Eclipse에서 작업 디렉토리는 "실행 구성"대화 상자의 "인수"탭에서 정의됩니다. 기본값은 실행중인 클래스와 동일한 디렉토리입니다.

+0

Jason에게 감사드립니다. Run Configurations 대화 상자를 살펴 보겠습니다. 다른 프로세스에 대한 두 번째 힙 덤프 파일을 만들 수 없었습니다.이 힙 덤프 파일은이 명명 체계와 모순되는 것처럼 보입니다. –

+0

흠, 프로세스의 현재 디렉토리에 hprof 파일이 없습니다. jvisualvm은 다른 디렉토리에 힙 덤프 파일 이름을 설정하기 때문에 jconsole도 마찬가지라고 생각합니까? –

6

jconsole에서 dumpHeap()을 호출하려고 할 때 dumpHeap (String, boolean)에 대한 첫 번째 매개 변수를 설정하지 않는 이유는 무엇입니까? 생성 된 힙 덤프 파일의 위치와 파일 이름입니다.

0

내 Java 응용 프로그램을 실행하는 .bat 파일이있는 폴더에 덤프 된 파일이 있습니다. (윈도우 8.1, 자바 7 사용) 제 경우 jboss,/jboss-as/bin/폴더. 찾으려면 * 오늘 파일을 검색하고 200MB 이상을 작성하십시오.