[Java] JVM에 대해

개발하기 좋은날·2023년 12월 19일

자바 스터디

목록 보기
3/6

개요

자바의 기본기를 다지기 위한 스터디를 진행하던 도중 "이것이 자바다"라는 책을 읽고 JVM 의 개념을 추가로 정리한 내용입니다.



JVM

JVM(Java Virtual Machine, 자바 가상 머신) 은 자바 어플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 역할을 한다.

JVM이 Java와 OS 사이의 중개자 역할


특징

  1. 컴파일된 바이트 코드를 기계가 이해할 수 있는 기계어로 변환
  2. 스택 기반의 가상 머신
  3. 메모리 관리와 GC(Garbage Collection; 가비지 컬렉션)을 수행

구조

크게 보면

  • Class Loader
  • Runtime data areas
  • Execution Engine

으로 나누어져있다.

Class Loader

클래스 파일을 Runtime Data Area의 메서드 영역으로 불러오는 역할

Execution Engine

.class 파일과 같은 ByteCode를 실행 가능하도록 해석

Runtime Data Area

런타임 시 클래스 데이터와 같은 메타 데이터와 실제 데이터가 저장되는 곳(프로그램을 수행하기 위해 OS로부터 할당받은 메모리 영역을 의미)


실행 과정

  1. 프로그램이 실행되면 JVM은 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받는다.
  2. 자바 컴파일러(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환시킨다.
  3. Class Loader를 통해 class 파일들을 JVM으로 로딩한다.
  4. 로딩된 class 파일들은 Execution Engine을 통해 해석된다.
  5. 해석된 바이트코드는 Runtime Data Area에 배치되어 실질적인 수행이 이루어지게 된다.


정리

Java가 OS에 종속되지 않고 다양한 운영체제에서 동작하도록 하는 핵심적인 원리가 JVM 이라고 생각하여 간단히 정리해보았습니다.

profile
말보단 행동으로

0개의 댓글