자바의 핵심 철학은 Write Once, Run Anywhere입니다. 같은 .class(바이트코드)를 여러 운영체제에서 실행할 수 있는 이유가 바로 JVM입니다. JVM은 OS/CPU 차이를 숨기고, 바이트코드를 각 환경에 맞게 실행합니다.
실무 관점에서는 JVM이 단순 실행기 역할만 하는 게 아니라, 메모리 관리(GC), JIT 최적화, 스레드 실행까지 책임지기 때문에 성능/장애 분석에서 JVM 이해가 곧 경쟁력이 됩니다.
“JVM은 바이트코드 실행기이면서
동시에 메모리(GC) + JIT 최적화 + 스레드 런타임이다.”
💡 TIP / 참고사항
실무에서 “응답이 가끔 멈춘다”는 이슈가 있으면 GC Stop-The-World가 원인인 경우가 많습니다.
그래서 JVM 튜닝은 보통 “더 빠르게”보다 멈춤을 줄이는 것(지연 안정성)이 목표가 됩니다.
👍 GOOD (JVM 이해로 해결되는 것)
- 메모리 폭증/누수 의심 → Heap/GC 로그로 판단
- 지연 스파이크 → STW, 스레드 대기, 락 경합 추적
- CPU 사용률 상승 → JIT/핫메서드/무한루프 가능성 점검
- 스레드가 멈춤 → 스레드 덤프로 블로킹 지점 확인
👎 BAD (흔한 오해)
- “GC는 자동이니까 신경 안 써도 된다” → 지연 문제의 핵심
- “Heap만 키우면 해결된다” → STW가 더 길어질 수도 있음
- “스레드 늘리면 빨라진다” → 락/커넥션 풀/컨텍스트 스위칭 병목
✅ 핵심 요약
- ✔️ JVM은 바이트코드 실행 엔진이며, OS/CPU 차이를 추상화한다.
- ✔️ 내부적으로 클래스 로딩, 실행 엔진(JIT), 런타임 메모리, GC가 핵심 구성이다.
- ✔️ 실무에서는 JVM 이해가 지연/메모리/스레드 장애 원인 추적에 직접 연결된다.