Development/Java

JVM 메모리

DevKTak 2023. 2. 3. 14:06

JVM(Java Virtual Machine): 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램 (메모리 관리, GC 수행)

  • 자바 가상 머신으로 자바 바이트 코드(.class 파일)를 OS에 특화된 코드로 변환
  • 바이트 코드를 실행하는 표준이자 구현체
  • JVM 밴더: 오라클, 아마존, Azul, ...
  • JDK는 특정 플랫폼에 종속적 (JDK를 다운받을 때에 mac OS용, Windows용, Linux용이 따로 있다.)
  • 자바는 플랫폼에 독립적이다.

 

JRE(Java Runtime Environment)

  • 자바 애플리케이션을 실행할 수 있도록 구성된 배포판
  • 개발 관련 도구는 포함하지 않는다. (그건 JDK에서 제공)

 

JDK(Java Development Kit)

  • JRE + 개발에 필요한 툴(javac, jar, apt 등)
  • 오라클은 자바 11부터 JDK만 제공하며 JRE를 따로 제공하지 않는다.

 

JVM 구조

JVM 동작 방식

  1. 자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당한다.
  2. 자바 컴파일러(javac)가 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일한다.
  3. Class Loader를 통해 JVM Runtime Data Area로 로딩한다.
  4. Runtime Data Area에 로딩 된 .class들은 실행 엔진을 통해 해석하여 실행된다.