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은 OS로부터 메모리를 할당한다.
- 자바 컴파일러(javac)가 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일한다.
- Class Loader를 통해 JVM Runtime Data Area로 로딩한다.
- Runtime Data Area에 로딩 된 .class들은 실행 엔진을 통해 해석하여 실행된다.