JVM이란?

2025. 1. 23. 15:30개발/개념 및 기법

728x90
반응형

1. JVM이란?

JVM은 자바 프로그램 실행의 핵심 엔진이며, 바이트코드를 기계어로 번역하고 실행한다.

 

(1) 바이트 코드 실행

  1. 자바 소스 코드(.java)는 컴파일러(javac)에 의해 바이트코드(.class)로 변환된다.
  2. JVM은 이 바이트코드를 실행 가능한 기계어로 번역하여 실행한다.
  3. 플랫폼 독립성을 보장하는 이유가 바로 이 바이트 코드 때문!!

(2) 플랫폼 독립성 제공

  1. 자바 프로그램은 특정 운영체제에 의존하지 않는다.
  2. JVM이 설치되어 있다면 어떤 환경에서든 동일하게 실행할 수 있다.

(3) 메모리 관리

  1. JVM은 프로그램 실행 시 필요한 메모리를 자동으로 관리한다.
  2. 주요 메모리 영역:
    1. Heap: 객체와 인스턴스 변수가 저장됨 (GC에 의해 관리)
    2. Stack: 메서드 호출과 지역 변수가 저장됨 (힙보다 빠른 접근)
    3. Method Area (or MetaSpace): 클래스의 구조와 메타데이터 정보가 저장됨
    4. PC Register: 각 스레드의 현재 실행 위치를 저장
    5. Native Method Stack: 네이티브 코드(C, C++ 등)의 실행에 사용됨

(4) Garbage Collection (GC)

  1. 불필요한 객체를 자동으로 삭제하여 메모리 회수

(5) Multithreading 지원

  1. 여러 스레드를 관리하여 멀티 스레드 환경을 지원

결국 JVM은 자바 프로그램의 핵심 실행 엔진으로, 개발자가 코드를 실행 환경에 신경 쓰지 않고 작업할 수 있게 도와준다.

 

2. JVM의 작동 과정

  1. 소스코드 컴파일
    1. .java 파일 → javac → .class 파일 (byte code)
  2. 클래스 로딩
    1. JVM의 Class Loader가 .class 파일을 로드함
  3. 바이트코드 실행
    1. JVM의 Execution Engine이 바이트코드를 실행 가능한 기계어로 변환함
      1. 인터프리터: 바이트코드를 한 줄씩 읽어서 실행
      2. JIT (Just-In-Time) 컴파일러: 반복 실행되는 코드를 기계어로 미리 변환해 성능 향상
  4. 런타임 관리
    1. JVM은 메모리 할당, 스레드 관리, 예외 처리, 가비지 컬렉션 등을 수행함
728x90
반응형

'개발 > 개념 및 기법' 카테고리의 다른 글

KMP vs CMP  (1) 2025.01.25
Kotlin Multiplatform (KMP)  (0) 2025.01.24
Java에서 try~catch문, 남용하면 문제 없을까?  (0) 2024.07.30
[개발 기본 개념]비트 연산자  (0) 2023.05.26
참조  (1) 2023.02.24