Java

Java thread dump+core dump 생성 방법

나쁜천사1004 2024. 6. 24. 14:08

Java Thread Dump 생성 방법

Java thread dump는 Java Virtual Machine (JVM)에서 실행 중인 모든 스레드의 상태를 출력한 것입니다. 다음과 같은 방법으로 생성할 수 있습니다.

  1. JVM Signal (Kill Command) 사용:
    • Unix/Linux 시스템에서 kill -3 [PID] 명령을 사용하면, JVM은 thread dump를 생성하여 표준 출력(stdout)에 출력합니다.
      kill -3 [PID]
    • Windows에서는 CTRL + BREAK 키를 사용하면 됩니다.
  2. jstack 유틸리티 사용:
    • jstack은 Java Development Kit (JDK)에 포함된 도구로, 실행 중인 JVM의 thread dump를 생성할 수 있습니다.
      jstack [PID] > thread_dump.txt
       
       
    • 이 명령은 지정된 프로세스 ID([PID])의 JVM에서 thread dump를 생성하여 thread_dump.txt 파일에 저장합니다.

 2번 방법은 CPU를 많이 사용하기 때문에 되도록이면 1번 사용

Core Dump 생성 방법

Core dump는 JVM 프로세스의 메모리 상태를 저장한 파일로, 심각한 오류 발생 시의 디버깅에 사용됩니다. 다음과 같은 방법으로 생성할 수 있습니다.

  1. Unix/Linux 시스템에서 ulimit 설정:
    • Core dump를 생성하려면 먼저 core dump 크기를 설정해야 합니다.
      ulimit -c unlimited
    • 그런 다음 JVM을 시작하면, JVM이 크래시할 때 core dump 파일이 생성됩니다.
  2. JVM 옵션 사용:
    • JVM 시작 시 -XX:+HeapDumpOnOutOfMemoryError 옵션을 추가하면, OutOfMemoryError가 발생할 때 heap dump가 생성됩니다.
      java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump -jar your_application.jar
    • -XX:HeapDumpPath 옵션을 사용하여 heap dump 파일이 저장될 경로를 지정할 수 있습니다.
  3. gcore 유틸리티 사용 (Linux):
    • gcore를 사용하여 실행 중인 프로세스의 core dump를 생성할 수 있습니다.
      gcore -o /path/to/dump [PID]
       
    • 이 명령은 지정된 프로세스 ID([PID])의 core dump를 /path/to/dump 경로에 생성합니다.
반응형

'Java' 카테고리의 다른 글

ROCKY(CENTOS) openjdk 17 yum 사용 없이 설치  (1) 2024.11.06
JVM GC 방식  (0) 2024.05.27