JVM이란

정안녕·2026년 1월 6일

Metaverse

목록 보기
2/16

2026년 1월 6일

[Java Virtual Machine]

Java로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를
실행시키기 위한 가상머신

JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 자바 API와 함께 실행하는 것으로 아래 도식을 보면 이해하기 쉬울 것이다.

  1. 자바 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당.
  2. 자바 컴파일러(javac)가 자바 소스 코드(.java)를 자바 바이트
    코드(.class)로 컴파일.
  3. Class Loader는 동적 로딩을 통해 필요한 클래스들을 로딩 및 링크하여 Runtime Data Area(실질적인 메모리를 할당받아 관리하는 영역)에 등록
  4. Runtime Data Area에 로딩된 바이트 코드는 Exeution Engine을 통해 해석
  5. 이 과정에서 Execution Engine에 의해 Garbage Collector의 작동과 Thread 동기화가 이루어진다.

JVM의 구조

위의 도식은 Class Loader <-> Execution Engine <-> Runtime Data Area
부분을 상세화 한 것이다.

  • 클래스 로더 (Class Loader)

  • 실행 엔진 (Execution Engine)

    • 인터프리터 (Interpreter)
    • 컴파일러 (Just-in-Time)
    • 가비지 콜렉터 (Garbage Collector)
  • 런타임 데이터 영역 (Runtime Data Area)

    • 메소드 영역
    • 힙 영역
    • PC Register
    • 스택 영역
    • 네이티브 메소드
  • JNI - 네이티브 메소드 인터페이스 (Native Method Interface)

  • 네이티브 메소드 라이브러리 (Native Method Library)

클래스 로더 (Class Loader)

JVM 내로 클래스 파일(*.class)을 동적으로 로드하고,
링크를 통해 배치하는 작업을 수행하는 모듈

다시 한 번 정리하자면 JVM은 시스템 메모리를 관리하며 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다.

또한, JVM은 다른 프로그램을 실행시키는 것이 목적인 프로그램으로
2가지의 기본적인 기능이 있다.

자바 프로그램이 어느 기기, 혹은 어느 운영체제 상에서도 실행될 수
있게 하는 것*과 프로그램 메모리를 관리하고 최적화하는 것이다.

 * "한 번 작성해 어디에서나 실행한다"

다음에는 JVM을 구성하는 것들에 대해 자세히 들여다 보겠다.

출처 링크텍스트

profile
죽순 디벨롭

0개의 댓글