..
JVM bootstrap 단계
TOC
Overview
flowchart LR
A[1. Launcher 시작] --> B[2. JVM bootstrap]
B --> C[3. Main class 탐색]
C --> D[4. Class loading / linking / initialization]
D --> E[5. main thread 진입]
classDef bootstrap fill:#fff3cd,stroke:#ff9800,stroke-width:3px,color:#222;
class B bootstrap;
java가 시작된 뒤 main에 들어가기 전까지 JVM은 먼저 실행 가능한 상태를 준비하고, 본문에서는 그 준비에 대한 과정을 다룬다.
bootstrap 단계가 하는 일
이 단계에서 JVM은 실행 조건을 확정한다.
- 시작 옵션을 반영한다. 예:
-Xms,-Xmx,-Xss,-Dfile.encoding=UTF-8 - 메모리와 스레드 같은 런타임 기본 상태를 만든다.
java.lang.Object,java.lang.String같은 core class를 읽을 기반을 준비한다.- 이후 class loading, linking, initialization이 진행될 수 있는 상태로 넘긴다.
무엇을 준비하나
- 초기 메모리와 실행 파라미터를 반영한다.
- core class를 찾기 위한 로딩 경로를 준비한다.
- 클래스 로딩이 가능하도록 최소한의 JVM 상태를 만든다.
해당 단계는 애플리케이션 로직이 아닌, JVM과 실행 환경을 먼저 준비한다.
Conclusion
bootstrap 단계는 JVM이 애플리케이션 코드를 실행하기 전에 필요한 최소 실행 상태를 만드는 구간이다.
- 옵션을 반영한다.
- 내부 런타임을 초기화한다.
- bootstrap class loader를 준비한다.
- 이후 class loading 단계로 넘어갈 수 있게 만든다.