📌 JVM이란?

info

JVM(Java Virtual Machine)은 Java 바이트코드를 실행하기 위한 가상 머신이다.
Java 프로그램은 JVM 위에서 동작하며, 하나의 코드가 여러 운영체제에서 실행될 수 있도록 해준다.


✅ JVM의 핵심 역할

역할 설명
바이트 코드 실행 컴파일된 .class 파일 실행
메모리 관리 Heap, Stack, Method Area 등 자동 관리
실행 환경 제공 OS에 따라 독립적인 자바 환경 구성
런타임 검증 바이트코드의 안전성 검증 및 보안 확보
예외 처리 런타임 예외 및 오류 처리 시스템 제공

✅ JVM 아키텍처 구성도

┌────────────┐
│ ClassLoader│  ← .class 파일 로딩
└────┬───────┘
     │
┌────▼──────┐
│ Bytecode  │ ← 바이트코드 검증 및 실행
│ Verifier  │
└────┬──────┘
     │
┌────▼─────────────┐
│ Execution Engine │ ← 인터프리터 / JIT 컴파일러
└────┬──────────────┘
     │
┌────▼────────────┐
│ Runtime Data Area│ ← Stack, Heap, PC, Method Area
└──────────────────┘

✅ Runtime Data Area 구성

영역 설명
Heap 객체 및 배열 저장 공간 (GC 대상)
Stack 메서드 호출 프레임, 지역 변수 저장
PC Register 현재 실행 중인 명령 주소
Method Area 클래스, 메서드, static 변수 정보 저장
Native Method Stack C/C++ 등 네이티브 메서드 실행 시 사용

✅ JVM의 동작 흐름

  1. 자바 파일 컴파일 → .class 바이트코드 생성
  2. JVM의 ClassLoader가 바이트코드 로딩
  3. Verifier가 바이트코드 유효성 검사
  4. Execution Engine이 바이트코드 실행 (JIT 또는 인터프리터)
  5. GC, 예외 처리, 메모리 관리 등 JVM 내부 메커니즘 작동

✅ JVM vs JRE vs JDK

항목 설명
JVM Java 코드 실행 엔진
JRE JVM + Java 라이브러리
JDK JRE + 컴파일러(javac), 개발 도구 포함

✅ 기타 특징

  • 플랫폼 독립성: 운영체제에 상관없이 Java 실행 가능
  • 자동 메모리 관리: Garbage Collection 포함
  • 보안: 클래스 로더, 바이트코드 검증 등 내장 보안
  • 성능 최적화: JIT 컴파일링 기술 활용

연결문서

댓글남기기