[자바(JAVA)]자바 가상 머신(JVM)의 구조

JRE (Java Runtime Environment)

  • JVM과 자바 프로그램을 실행(동작)시킬 때 필요한 라이브러리 API를 함께 묶어서 배포되는 패키지
  • 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일(jar 파일)을 포함
java

JVM (Java Virtual Machine)

  • 자바 가상머신(Java Virtual Machine)
  • 자바를 돌리는 프로그램
  • 자바 프로그램을 실행하기 위해서는 반드시 자바 가상 머신을 설치
  • 자바 프로그램을 모든 플랫폼에서 제약 없이 동작
  • OS에 종속적이지 않다는 특징을 가지고 있다.

자바 가상 머신(JVM)의 구조

​클래스 로더 (Class Loader)

바이트 코드(.class)들을 엮어서 JVM의 메모리 영역인 Runtime Data Areas에 배치

실행 엔진 (Execution Engine)

바이트 코드를 명령어 단위로 읽어서 실행

1. 인터프리터(Interpreter)

바이트 코드 명령어를 하나씩 읽어서 해석하고 바로 실행

2. JIT 컴파일러(Just-In-Time Compiler)

바이트 코드 전체를 컴파일하여 Native Code로 변경하고 네이티브 코드로 직접 실행하는 방식

3. 가비지 컬렉터 (Garbage Collector ,GC)

Heap 메모리 영역에서 더는 사용하지 않는 메모리를 자동으로 회수

런타임 데이터 영역 (Runtime Data Area)

JVM의 메모리 영역으로 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역

1. 메서드 영역 (Method Area)

  • JVM이 시작될 때 생성되는 공간으로 바이트 코드(.class)를 처음 메모리 공간에 올릴 때, 초기화되는 대상을 저장하기 위한 메모리 공간
  • JVM이 동작하고 클래스가 로드될 때 적재되서 프로그램이 종료될 때까지 저장

2. 힙 영역 (Heap Area)

  • new 연산자로 생성되는 클래스와 인스턴스 변수, 배열 타입 등 Reference Type이 저장되는 곳

3. 스택 영역 (Stack Area)

  • int, long, boolean 등 기본 자료형을 생성할 때 저장하는 공간
  • 임시적으로 사용되는 변수나 정보들이 저장되는 영역

4. PC 레지스터 (Program Counter Register)

  • 현재 수행중인 JVM 명령어 주소를 저장하는 공간

5. 네이티브 메서드 스택 (Native Method Stack)

  • 기계어로 작성된 프로그램을 실행시키는 영역

Leave a Comment