스터디/CS

[CS] JVM 구조

kwang2134 2025. 3. 14. 17:40
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