2025-03-27
JVM 구조
JVM 구조
Class Loader
Class Loader는 .class 파일을 읽어 JVM 내부 메모리에 로딩하는 역할을 합니다. 세 가지 로더를 사용합니다.
- Bootstrap ClassLoader: rt.jar (핵심 JDK 클래스) 처리
- Extension ClassLoader: --module-path를 통한 모듈 관리
- Application ClassLoader: 사용자가 작성한 클래스 처리
로딩 순서: Loading → Linking (verification/preparation/resolution) → Initialization
Runtime Data Area
1. Method Area
- 모든 스레드가 공유
- 클래스 메타데이터 저장
2. Heap
- 객체와 배열을 포함
- 가비지 컬렉션 대상
- 모든 스레드가 공유
3. Stack
- 스레드별로 생성
- 메서드 호출 시 스택 프레임 생성
- 지역 변수와 오퍼랜드 스택 포함
StackOverflowError발생 가능
4. Program Counter (PC Register)
- 각 스레드가 현재 실행 중인 명령어의 주소를 저장
5. Native Method Stack
- 외부 네이티브 메서드(C/C++ 호출) 처리
Execution Engine
1. Interpreter
- 바이트코드를 한 줄씩 번역
- 실행 속도가 느림
2. JIT (Just-In-Time Compiler)
- 자주 호출되는 코드를 네이티브 코드로 변환
- 실행 성능을 크게 향상
3. Garbage Collector (GC)
- 힙 메모리를 관리하고 사용하지 않는 객체를 자동 제거
- 다양한 알고리즘 사용 가능 (Serial, Parallel, CMS, G1, ZGC)
- Stop-the-world 일시 정지 발생 가능
4. Native Interface (JNI)
- Java에서 C/C++ 라이브러리 호출 가능 (OpenGL, OS API 등)
관련 글
벡터 유사도 기반100% 일치
JVM 메모리 구조와 클래스 로딩 (Constant Pool과 intern())
JVM의 Runtime Data Area 메모리 구조와 클래스 로딩 과정을 다룹니다. Constant Pool, Runtime Constant Pool, 그리고 intern()의 동작 원리를 살펴봅니다.
66% 일치스프링 내부 구조 정리
스프링의 핵심 내부 구조를 실제 코드와 테스트를 통해 정리합니다. IoC 컨테이너, Bean 생명주기, AOP, 의존성 주입 방식을 다룹니다.
65% 일치GC(Garbage Collector) 벤치마크 테스트: G1GC vs ZGC vs GenZGC
Java의 세 가지 가비지 컬렉터(G1GC, ZGC, GenZGC)의 벤치마크 테스트 결과를 비교합니다. 실행 시간, GC 사이클, 일시 정지 시간을 분석합니다.