JVM이 힙 덤프 파일 및 액세스 방법에 대해 이야기

JVM 힙 덤프 파일 (힙 덤프) 시점, 자바 프로세스 메모리의 스냅 샷입니다. 이 메모리는 아직 전체 GC를 복구하지 않은 객체와 클래스 정보가 포함되어 있습니다.

1 파일 내용

힙 덤프 파일에는 다음이 포함됩니다 :

  1. 기본 데이터 유형 클래스, 필드에 해당하는 개체 및 참조 - 모든 객체.
  2. 모든 카테고리 - 클래스 로더, 클래스 이름, 슈퍼 클래스와 정적 필드.
  3. 루트 가비지 컬렉터 - 자바 가비지 컬렉션을 사용하는 것입니다, 도달 가능성 분석은 개체가 재활용 할 수 있는지 여부를 확인합니다.
  4. 스레드 스택과 로컬 변수.

정보가 객체 생성자를 찾을 수 있도록 힙 덤프 파일이 정보를 공유하기 위해 저장되지 않습니다 때문에.

자동 생성 모드 2

우리는 JVM을 구성 할 수 있습니다 -XX:+HeapDumpOnOutOfMemoryError, 자동으로 작업 디렉토리에 힙 덤프 파일을 생성합니다 메모리 오버 플로우 예외의 경우 (OutOfMemoryError가)에서, 그래서 잠시.

수동 생성 모드 3

3.1 jmap는 명령

jmap -dump:format=b,file=<filename.hprof> <pid>
复制代码
  • 상기 포맷 = B, 바이너리 포맷으로 표현 덤프.
  • 파일은 덤프 파일 경로 접미사 HPROF를 지정합니다.
  • PID는 프로세스 ID를 나타낸다.

창에 cmd를, 당신은 프로세스 ID를 확인하려면 명령 태스크 목록을 사용할 수 있습니다.

3.2 jconsole의 콘솔

JConsole의은 (자바 모니터링 및 관리 콘솔)에 JDK는 모니터링 및 관리 도구와 함께 제공됩니다.

첫째, $를 두 번 클릭 {JDK_HOME} /bin/jconsole.exe 오픈 프로세스 연결 목록, 우리는 덤프 프로세스를 선택해야합니다 :

기본값은 여기 SSL, 지역 일반적으로 사용하지 않는, 그래서 직접 선택 "안전하지 않은 연결"을 사용하는 것입니다 :

성공적으로 연결 한 후에는 한 눈에 모니터링을 입력합니다 :

이 힙 덤프 파일을 생성 할 수 있도록 dumpHeap에 HostSpotDiagnosic에서 선택의 MBean →의 com.sun.management, HPROF의 P0에서 입력 파일 내보내기 경로 :

3.3 이클립스 메모리 분석기

또한 입구 쳉 중성에서 직접, 힙 덤프 파일을 이클립스 메모리 분석기를 사용할 수 있습니다. 열기 메모리 분석기, 파일이 → 힙 그때 우리가 선택 과정을 덤프, 좋은 힙 메모리의 경로를 지정하려면, 로컬 프로세스 목록이 열립니다 오른쪽 상단 덤프 취득 클릭 :

우리는 압축 경로와 수출 매개 변수의 개발이 발전하고 있는지, 활성 개체를 내보낼 지 여부, 수출의 유형을 구성 할 수 있습니다 힙 덤프 제공자 매개 변수 구성 페이지를 입력합니다, 다음을 클릭합니다 :


개인적으로 나는 jmap는 명령이 단순하고 명확 선호합니다.

추천

출처juejin.im/post/5d57bbcd5188253761068f3f