728x90
반응형
실행과정 및 JVM
Java 코드가 어떻게 수행되는지 확인해 봅니다.
실행과정
- 자바 소스코드(.java)를 javac가 읽어 (.class)로 변환합니다.
- Class Loader가 class 파일들을 JVM으로 로딩해 줍니다.
- 로딩된 class파일들은 Execution engine을 통해 해석됩니다.
- 해석된 바이트코드는 Runtime Data Areas 에 배치되고 수행이 이루어집니다.
전체 구조
JVM 이란?
Java Vritual Machine 이다.
자바 바이트코드(.class)를 실행할수 있는 주체이다.
Class Loader
- 바이트코드를 JVM 으로 로드 하는 역할을 한다.
- 자바 클래스를 JVM 으로 동적로딩하는 자바 런타임 환경일부이다.
- 일반적으로 클래스들은 한 차례만 로드된다
- 로딩 -> 링킹 -> 초기화 순으로 수행된다.
JVM Memory
Runtime Data Area 라고도 한다.
- Method Area:
- 모든 클래스 수준의 데이터가 저장되는 영역이다. - Heap Area:
- 인스턴스 오브젝트가 저장되는 영역이다. - Stack Area:
- 기본형 타입 변수 저장, 참조형 타입일때 참조값만 저장 메소드, 쓰레드 가 저장되는 영역이다. - PC Regeister:
- 현재 실행중인 명령문의 주소를 가진다.
- 스레드마다 존재한다. - Native Method Stack:
- 자바외의 언어로 작성된 코드를 위한 영역이다.
Execution Engine
load 된 바이트 코드를 실행하는 영역이다.
두가지 방식을 사용한다 Interpreter 과 JIT Compiler 이다.
- Interpreter:
- 대부분 해당 방식을 사용한다.
- Byte code(.class)를 하나씩 읽어서 해석후 실행. - JIT Compiler
- Just In Time 의 약어이다.
- 코드가 실행 되는 과정에서 실시간으로 일어난다. 그래서 Just In Time 이다.
- 바이트코드 전체를 변환후 캐시에 저장되기 때문에 재사용시 컴파일이 한번만 한다. - Garbage Collection
- 사용하지 않는 오브젝트를 자동으로 제거한다.
- C++ 은 사용자가 직접 메모리를 해제 하지만
- Java 같은 경우는 Garbage Collection이 대신 해준다.
Native Method Interface
- 다른 언어들로 작성된 라이브러리들을 호출하거나 반대로 호출되는 것을 가능하게 하는 프로그래밍 프레임워크이다
- 자바코드가 네이티브 응용 프로그램(하드웨어와 운영 체제 플랫폼에 종속된 프로그램들)
- C, C++, 어샘블리
Native Method Library
- Java 이외의 다른 언어로 구현된 라이브러리를 말한다.
728x90
반응형
'Language > Java Architecture' 카테고리의 다른 글
[Java] Garbage Collector (0) | 2021.08.24 |
---|
댓글