JAVA/etc...
[JAVA] JVM 동작원리
숭어싸만코
2024. 5. 8. 11:27
JVM 동작원리
1. 사용자가 작성한 JAVA Source(.java)파일을 JAVA Compiler 를 통해 JAVA Byte Code(.class) 로 변환
2. 컴파일된 바이트 코드를 Class Loader 에게 전달
3. 클래스 로더는 동적로딩을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역 => JVM 메모리에 올린다.
4. Execution Engine 은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행한다.
Class Loader
Runtime Data Area
Execution Engine
실행엔진은 클래스 로더를 통해 런타임 데이터 영역에 배치된 바이트 코드를 명령어 단위로 실행
바이트 코드 형태 변경 2가지
인터프리터 :
- 바이트 코드 명령어를 하니씩 읽어서 해석하고 실행한다.
- 하나하나의 해석은 빠르지만 전체적인 실행 속도는 느리다는 단점
- JVM안에서 바이트코드는 기본적으로 인터프리터 방식 동작
JIT 컴파일러 (Just-In-Time Compiler) :
- 인터프리터의 단점을 보완하기위해 도입
- 바이트코드 전체를 컴파일하여 네이티브 코드로 변경 => 네이티브 코드로 직접 실행
- 전체 네이티브 코드를 실행하는 것이기 때문에 전체적인 실행 속도는 인터프리팅 방식보다 빠르다.