문제 해결 도구
문제 해결 도구 (The Troubleshooting Tools)
애플리케이션이 예상치 못하게 죽거나, 메모리 문제가 생기거나, 이상한 동작을 보일 때가 있어요. 이런 상황에서 무작정 디버깅을 시작하기 전에, 실행 중인 JVM을 진단할 수 있는 문제 해결 도구를 먼저 만져보는 게 좋아요. 이번 섹션에서는 실행 중인 Java Virtual Machine(JVM)에 진단 명령을 보내거나, 프로세스 상태를 확인하고, 충돌한 JVM의 코어 덤프를 분석하는 JDK 도구들을 다뤄요.
본문
이 섹션에서 다루는 도구들을 원문 순서대로 정리했어요. 각 항목을 누르면 자세한 튜토리얼로 이동해요.
- Jcmd — JVM에 진단 명령 보내기 (Jcmd - Send Diagnostic Commands to a JVM) — 실행 중인 Java Virtual Machine(JVM)에 진단 명령 요청을 보내요.
- Jdb — Java 프로그램 버그 수정 (Jdb - Fixing Bugs in Java Programs) — Java 플랫폼 프로그램의 버그를 찾고 고쳐요.
- Jhsdb — 충돌한 JVM 코어 덤프 분석 (Jhsdb - Analyzing the Core Dump of a Crashed JVM) — Java 프로세스에 연결하거나 사후(postmortem) 디버거를 실행해, 충돌한 Java Virtual Machine(JVM)의 코어 덤프 내용을 분석해요.
- Jinfo — Java 구성 정보 생성 (Jinfo - Generating Java Configuration Information) — 지정된 Java 프로세스에 대한 Java 구성 정보를 생성해요.
- Jmap — 프로세스 상세 출력 (Jmap - Printing Details of a Process) — 지정된 프로세스의 상세 내용을 출력해요.
- Jstack — Java 스택 트레이스 출력 (Jstack - Printing Java Stack Traces) — 지정된 Java 프로세스의 Java 스레드에 대한 Java 스택 트레이스를 출력해요.
이 도구들의 공통점은 여러분이 만든 코드 자체보다는, 이를 실행하는 JVM과 Java 프로세스의 실제 상태를 들여다보는 데 초점을 맞춘다는 점이에요. 스레드가 어디서 막혔는지(jstack), 메모리 상태는 어떤지(jmap), 어떤 설정으로 도는지(jinfo)처럼요. 프로덕션에서 문제를 만났을 때 이 도구들을 써 보세요.
관련 링크 (Related Links)
이 섹션과 함께 보면 좋은 자료들이에요.
- HotSpot Virtual Machine Garbage Collection Tuning Guide — HotSpot VM의 가비지 컬렉션 튜닝 가이드예요.
- Jstat - Monitoring your JVMs Statistics — JVM 통계를 모니터링해요.