JVM은 어떻게 구성될까?
JVM의 구성 요소
- 클래스 로더
- 바이트 코드(.class 파일)를 묶어서 Runtime Data 영역에 적재한다.
- 클래스가 처음 참조될 때 로딩한다.
- 바이트 코드(.class 파일)를 묶어서 Runtime Data 영역에 적재한다.
- 실행 엔진
- GC
- 사용되지 않는 메모리를 자동으로 회수한다.
- 동적으로 할당된 객체 중에서 참조되지 않은 객체를 탐색 후 제거한다.
- 사용되지 않는 메모리를 자동으로 회수한다.
- 런타임 데이터 영역
- 힙, 메서드1, 스택 영역과 PC 레지스터, 네이티브 메서드 스택2으로 구성된다.
- 힙, 메서드 영역은 모든 스레드가 공유하고, 스택 영역, PC 레지스터, 네이티브 메서드 스택은 스레드마다 독립적으로 할당받는다.
- 힙, 메서드1, 스택 영역과 PC 레지스터, 네이티브 메서드 스택2으로 구성된다.
1메서드 영역: 클래스 수준의 정보(클래스 메타데이터, 정적 변수 등)를 저장한다. Static 영역이라고도 불린다.
2네이티브 메서드 스택: Java 이외의 언어(C, C++, 어셈블리 등)로 작성된 네이티브 코드를 실행할 때 사용되는 메모리 영역.