JVM, Java virtual machine
java 프로그램을 실행하기 위한 가상머신이다.
동작원리
- 컴파일 :코드(.java)를 Bytecode(.class)로 컴파일하고 .class파일을 jvm이 실행한다.
- JVM 실행 :
1) 클래스 로더(ClassLoader) 가 클래스 로딩
: JVM 메모리로 동적으로 로딩(지연로딩)
jdk 핵심클래스 -> extention 클래스 -> 사용자 작성 클래스 순
2) 바이트코드 검증(Verifier) 으로 보안 검증
: 올바른 코드인지 검증하여 악성 클래스 차단
3) 런타임 데이터 영역에 클래스/객체 배치
: 실행에 필요한 메모리 구조, JVM 종료 시 소멸 ( Heap, Method Area, JVM Stack, Program Counter (PC) Register, Native Method Stack)
4) Execution Engine에 의해 인터프리터 or JIT 컴파일러가 코드 실행
: 인터프리터로 해석 및 실행 -> 반복 실행의 경우 JIT으로 컴파일 및 캐싱 -> 즉시 실행으로 성능향상 - GC 메모리 관리
- 프로그램 종료 후 리소스 정리
특징
- 플랫폼 독립성 : Write once, run anywhere.
- 자동 메모리 관리 : GC
- 보안성 : JVM이 메모리 접근을 통제
- 멀티스레딩 : JVM 레벨에서의 멀티스레딩
- 클래스 로딩 동적 지원 : 실행중 필요한 클래스만 로딩
- 성능 최적화 : JIT 컴파일러를 통한 런타임 최적화
종류
OpenJdk, Hotspot, GraalVM, correcto 등 무료/유료 라이센스들이 여럿 있으며, 다양한 특징과 환경을 가지고 있기 때문에 필요에 따라 선택하여 사용하는 안목이 필요함
'CS 정리' 카테고리의 다른 글
STW, Stop the world 제어하기 (2) | 2025.04.13 |
---|---|
메세지 큐, Message Queue (0) | 2025.04.13 |
메모리 단편화, Fragmentation (0) | 2025.04.12 |
GC, Garbage Collection (0) | 2025.04.12 |
java Collection, Hash 연관 정리 (0) | 2025.04.07 |