WIPIVERSE

자바 가상 머신

자바 가상 머신(Java Virtual Machine, JVM)은 자바 바이트코드를 실행할 수 있는 주체이다. 자바 프로그램이 운영체제(OS)나 하드웨어 아키텍처에 종속되지 않고 다양한 플랫폼에서 실행될 수 있도록 하는 중간 계층 역할을 한다.

주요 기능

  • 바이트코드 실행: 자바 컴파일러(javac)가 .java 소스 코드를 컴파일하여 생성한 .class 파일(바이트코드)을 해석하고 실행한다.
  • 메모리 관리: 런타임 데이터 영역(힙, 스택, 메서드 영역 등)을 관리하며, 가비지 컬렉션(Garbage Collection)을 통해 더 이상 사용되지 않는 객체 메모리를 자동으로 해제한다.
  • 플랫폼 독립성 구현: "Write Once, Run Anywhere(WORA)" 원칙을 실현하기 위해, 각 운영체제(Windows, Linux, macOS 등)에 맞는 JVM 구현체를 제공한다.
  • 보안: 클래스 로더(Class Loader)와 바이트코드 검증기(Bytecode Verifier)를 통해 검증되지 않은 코드의 실행을 방지하고 샌드박스(Sandbox) 환경을 제공한다.

구조 JVM은 크게 클래스 로더 서브시스템, 런타임 데이터 영역, 실행 엔진, 네이티브 인터페이스(JNI)로 구성된다.

  1. 클래스 로더: 클래스 파일을 로드, 링크, 초기화하여 런타임 데이터 영역에 배치한다.
  2. 실행 엔진: 바이트코드를 기계어로 변환하여 실행한다. 인터프리터 방식과 JIT(Just-In-Time) 컴파일러 방식을 혼용하여 성능을 최적화한다.
  3. 런타임 데이터 영역: 프로그램 실행 중 필요한 데이터(객체, 지역 변수, 스레드 정보 등)를 저장한다.

대표적인 구현체 가장 널리 쓰이는 구현체는 오라클(Oracle)에서 제공하는 '핫스팟(HotSpot) VM'이다. 이 외에도 오픈소스인 'OpenJDK', 이클립스 재단의 'Eclipse OpenJ9', 아줄 시스템즈의 'Zing', 그레일VM(GraalVM) 등이 있다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기