728x90
반응형
728x90
JVM (Java Virtual Machine)
JVM은 자바 프로그램을 실행하기 위한 가상 머신으로, 자바 코드를 운영체제에 구애받지 않고 실행하게 해 줌
JVM 구성 요소
Class Loader, Execution Engine, Garbage Collector, Runtime Data Area로 나눠짐
1. Class Loader (클래스 로더)
- 역할: .class 파일을 JVM에 로드하고 Link 및 Initialization을 통해 JVM에서 실행 가능한 상태로 만드는 역할
- 동작 과정:
- Loading: 클래스 파일을 JVM에 로드
- Linking: 로드된 클래스를 런타임 상태에 연결
- Initialization: 클래스 정적 변수 초기화
- 클래스 로더 계층:
- 부트스트랩 클래스 로더(Bootstrap Class Loader): 자바 런타임에서 기본적인 클래스를 로드
- 확장 클래스 로더(Extension Class Loader): JRE 확장 라이브러리 로드
- 애플리케이션 클래스 로더(Application Class Loader): 애플리케이션 클래스 로드
2. Execution Engine (실행 엔진)
- 역할: 클래스 로더를 통해 로드된 바이트 코드 실행
- 구성 요소:
- Interpreter: 바이트 코드를 직접 해석해서 실행
- JIT(Just-Inn-Runtime) Compiler: 자주 실행되는 코드를 네이티브 코드로 컴파일
3. Garbage Collector
- 역할: 힙 영역에 생성된 객체 중 참조되지 않은 객체를 탐색하여 메모리에서 제거
4. Runtime Data Area
- 역할: 자바 프로그램 실행 시 필요한 데이터를 저장하는 영역
- 구성 요소:
- Method Area: 클래스 구조, 메서드 코드, 상수 풀 등 저장
- Heap Area: 객체와 배열이 생성되는 영역 → 모든 쓰레드가 공유
- Stack Area: 메서드 호출 시 생성되는 스택 프레임 저장
- PC Register: 현재 실행 중인 명령어 주소 저장 → 쓰레드마다 존재
- Native Method Stack: 자바 외 언어로 작성된 네이티브 코드를 위한 스택
728x90
'스터디 > CS' 카테고리의 다른 글
[CS] Java String, StringBuilder, StringBuffer 차이 (0) | 2025.03.28 |
---|---|
[CS] 자바 문자열 할당 방식 (0) | 2025.03.27 |
[CS] 객체 지향 프로그래밍 특징 (0) | 2025.03.26 |
[CS] Garbage Collection (0) | 2025.03.25 |
[CS] Java 실행 과정 (0) | 2025.03.12 |