JVM의 구조와 Java 프로젝트 실행시 동작 흐름
우리가 작성한 자바 프로그램이 동작하기 위해서는 javac
명령어를 통해 .java
파일을 .class
바이트코드로 컴파일한 뒤 java
명령어를 통해 이 .class
코드를 JVM이 읽어 실행해야한다. JVM은 여러 구성요소들로 이루어져 있으며 이 요소들이 유기적을 연결되어 프로그램을 지속적으로 동작시킨다.
JVM 구조
[!info]- JVM 이란? JVM(Java Virtual Machine)이란 Java 프로그램을 멀티플랫폼에서 동작시킬 수 있도록 도와주는 Java 프로그램 실행도구이다.
- Class Loader
- Runtime Data Area
- Execution Engine
- Garbage Collector? Execution Engine에 포함되는 건가?
Class Loader의 과정
- 변환된
.class
와 Class Library들을 JVM의 Runtime Data Area로 로드하는 역할을 한다. - 실행시 필요한 class들을 load한다.(Link 과정)
- 런타임시 class를 load한다.
Runtime Data Area
Java 8 or 7 이전 이후로 구조가 어떻게 변했는지 Check
- Method Area
- Runtime Constant Pool 포함함
- Heap Area
- Young Generation(Eden, Survivor0, Survivor1) - Application이 사용
- Old Generation - Application이 사용
- Permanent - JVM에 사용
- Stack Area
- PC 레지스터
- Native Method Stack
Execution Engine의 동작
- 인터프리터
- JIT
- GC
GC의 동작
흐름 정리
참고
댓글남기기