다양한 공부/Java

JVM(Java Virtual Machine) 핵심만 딱딱

RunTurtle 2024. 1. 11. 01:41

1. JVM 정의 및 목적

정의: JVM(Java Virtual Machine)은 자바 바이트 코드(.class 파일)를 실행할 수 있는 런타임 환경을 제공하는 가상 머신입니다.
목적: JVM은 자바 프로그램이 다양한 하드웨어와 운영 체제 상에서 동일하게 실행될 수 있도록 합니다. 이는 자바의 핵심 원칙인 '한 번 작성하면 어디서나 실행(Write Once, Run Anywhere - WORA)'을 실현합니다.


2. JVM의 주요 구성 요소

클래스 로더 시스템: 자바 클래스(.class 파일)를 런타임 시 동적으로 로딩, 링크, 초기화합니다.
런타임 데이터 영역: 메소드 영역, 힙, 스택, PC 레지스터, 네이티브 메소드 스택 등으로 구성되며, 각종 데이터 타입, 인스턴스, 메소드 정보 등을 저장합니다.
실행 엔진: 바이트 코드를 기계어로 변환하여 실행합니다. JIT(Just-In-Time) 컴파일러와 인터프리터를 포함합니다.
네이티브 인터페이스: 자바 애플리케이션과 호스트 시스템 간 상호작용을 가능하게 합니다.
가비지 컬렉터: 더 이상 사용되지 않는 메모리를 자동으로 관리하고 회수합니다.


3. JVM의 동작 과정

바이트 코드 실행: 자바 컴파일러가 소스 코드를 바이트 코드로 변환한 후, JVM은 이를 실행합니다.
플랫폼 독립성: JVM은 특정 운영 체제에 종속되지 않으며, 모든 운영 체제에서 자바 애플리케이션을 실행할 수 있게 합니다.


4. 성능 최적화

JIT 컴파일러: 실행 시간 동안 바이트 코드를 기계어로 변환하여 성능을 최적화합니다.
가비지 컬렉션: 메모리를 효율적으로 관리하여 안정적인 성능을 유지합니다.


5. 보안
샌드박스 모델: JVM은 애플리케이션을 샌드박스 내에서 실행하여 시스템 리소스에 대한 무단 액세스를 제한합니다.