2014-12-03 2 views
18

누구나 실행중인 JVM에서 힙 덤프를 얻을 수 있다는 것을 알고 있습니다. 다른 방법이 가능합니까? 힙 덤프를 사용하여 JVM을 시작할 수 있습니까?힙 덤프에서 jvm을 인스턴스화 할 수 있습니까?

저는 오랫동안이 질문을 염두에 두었습니다. 이것이 가능하다면 많은 시간을 해결할 수 있고 지원 엔지니어가 쉽게 생각할 수 있습니다. 고객이 직면 한 드문 문제를 재현해야하는 경우 큰 도움이됩니다. [기본 하드웨어와 Java 런타임이 같고 모든 지원 파일도 파일 시스템의 각 위치에 있습니다.]

추가 참고 사항 : OOM이 발생할 때가 아니라 JVM이 시작된 후 특정 시점에서이 작업을 수행 할 의도가 있습니다.

+0

당신이 요구하는 것은 시간을 반전 의미한다. 그것은 불가능합니다. 당신이 물어볼 필요가 있다는 것을 놀라게했습니다. – EJP

+0

우리 모두가 모두 알고있을 수는 없다는 것을 감안할 때 실제로는 좋은 질문이라고 생각합니다. – Joeblade

답변

1

Java Mission ControlChronon DVR (상업용)과 같은 도구를 찾고 있다고 생각합니다.

자바 미션 컨트롤

자바 플라이트 레코더 및 Java 미션 :이 당신에게 사건 분석, 이벤트 수집 및 프로파일 링 (크로 논으로 표현한대로) 시간 여행 디버깅 자신의 문서 당으로

도움 함께 제어하면 전체 도구 체인을 생성하여 사후 분석을 가능하게하는 낮은 수준의 상세한 런타임 정보를 연속적으로 수집합니다 ( ). Java Flight Recorder는 Oracle JDK에 을 내장 한 프로파일 링 및 이벤트 수집 프레임 워크입니다. Java 관리자 및 개발자는 Java Virtual Machine (JVM) 및 Java 응용 프로그램의 작동 방식에 대한 자세한 하위 수준 정보를 수집 할 수 있습니다. Java Mission 컨트롤은 Java Flight 레코더에서 수집 한 데이터의 광범위한 분석을 효율적으로 수행 할 수있는 고급 도구 세트입니다. 이 툴 체인은 에 개발자와 관리자를 가능하게 수집 및 Java 응용 프로그램에서 데이터가 로컬 또는 실행 오라클 JDK 7 업데이트 40 (7u40)

일부 주요 기능 의의 출시와 함께 생산 environments.Starting에 배치 분석 귀하의 경우 도움이 될 것 크로 논 녹화 서버 :

서버 특별히 장기 실행을 위해 설계되었습니다 기록, 한 번에 몇 주 또는 몇 달 실행 서버 측 응용 프로그램. 녹음 서버는 이 너무 커서 오래된 녹음을 플러시 할 경우 녹음을 분할합니다.

길게 희미하게 자세한 로그 파일을 살펴보고 프로그램을 디버그해야합니다. 프로그램 전체에서 실행 된 내용을 정확히 실행하고 을 확인하십시오. 녹음 서버는 팀 구성원간에 또는 여러 팀에서 서로 다른 시스템에 녹음을 공유합니다.

1

실행중인 JVM에서 힙 덤프를 만들려면 jhat 또는 jcmd (GC.heap_dump 명령 사용)를 사용할 수도 있습니다. 둘 다 JDK/bin 폴더에 있습니다. MAT는 덤프의 내용을 분석하는 한 가지 방법입니다.Java Mission Control에는 힙 덤프를 분석하는 JOverflow라는 도구가 있지만 메모리 낭비 패턴 만 조사합니다.

이미지 종류에서 JVM을 다시 시작하는 방법에 대해 들어 본 적이 없으므로 힙 덤프는 자바 객체 만 포함하고 컴파일 된 코드 및 다른 것들을 포함하지 않기 때문에 충분하지 않습니다.

2

아니요,을 사용할 수 없습니다. 열려있는 각 파일의 현재 위치와 같은 것이 필요할 것입니다. 이는 간단한 순차적 읽기에서 반환되는 데이터에 영향을 미칩니다. 복원자가 각 파일을 열어 올바른 위치로 가져와야합니다. 검색 할 수없는 스트림에서는 가능하지 않을 수 있습니다.

프로그램 별 직렬화가 훨씬 더 실현 가능한 경로이며, 거기에서 프로그램을 설정하십시오.

또한 힙 덤프는 일반적으로 OutOfMemory에서 발생하므로 동일한 JVM을 다시 작성하면 OutOfMemoryException이 다시 발생합니다. 그 사이에 힙 덤프를 가져 오는 경우 jvm을 가져올 때 객체를 직렬화하고 복원하십시오.

(이 질문의 의견에서 복사 한 내용은 저자 almas-shaikhpatricia-shanahan)

+0

메모리 부족 오류가 발생하면 힙 덤프가 만들어 지지만 힙 덤프를 가져 오는 유일한 방법은 아닙니다. 이 대답은 저자의 의도를 전제로합니다. a -> b가 b -> a를 의미하지 않기 때문에 - – Joeblade

+0

포인트는 질문에 답변하지 않았습니다. (또는 첫 번째 줄은 정확하지만 왜/왜를 나열하지 않고, 복원하는 데 유용하지 않은 덤프를 생성하는 특정 상황에 대해 논의합니다). 제 생각 엔 두 번째 단락이 중요하지만 첫 번째 단락은 아닙니다. – Joeblade