JVM (Java Virtual Machine)
- 스택 기반의 가상 머신
- 자바 애플리케이션은 클래스 로더를 통해 읽어들여 자바 API와 함께 실행한다.
- Java가 OS에 구애받지 않고 재사용 가능하게 해준다.
- 메모리 관리, Garbage Collection을 수행한다.
- 자바 바이트 코드를 실행할 수 있는 주체다.
자바 프로그램 실행 과정
- 프로그램이 실행되면 JVM은 OS로부터 프로그램이 필요로하는 메모리를 할당받는다. JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.
- 자바 컴파일러
javac
가 자바 소스 코드를 읽어들여 자바 바이트 코드.class
로 변환시킨다. - Class Loader를 통해 class 파일들을 JVM으로 로딩한다.
- 로딩된 class 파일들은 Execution Engine을 통해 해석된다.
- 해석된 바이트코드는 Runtime Data Area에 배치되어 실질적인 수행이 이루어지게 된다. 이 실행과정 속에서 JVM은 필요에 따라 Thread Synchronization과 GC같은 관리 작업을 수행한다.