Java Virtual Machine

박상훈·2022년 6월 16일
0
post-thumbnail
자바 바이트 코드를 실행하여 런타임 환경을 제공하는 사양
javac(java compiler) : .java -> .class (바이트 코드)
interpreter, JIT compiler : .class -> 바이너리(기계어)

ClassLoader


JVM subsystem, Java 실행시 클래스로더를 이용하여 클래스를 로더

Bootstrap ClassLoader

Java Standard Edition 의 클래스 파일을 포함하는 rt.jar 로드

Extension ClassLoader

외부 클래스(라이브러리) 로드

System/Application ClassLoader

작성한 클래스 파일 로드, 응용 프로그램 클래스 로더라고 칭함

Class(Method) Area


상수 풀, 필드, 메서드 등의 클래스별 구조 저장

Heap


객체 할당 영역

Stack


LIFO, 로컬 변수 보유, 메서드 호출 및 반환 역할

Execution Engine


Virtual Processor

자바 가상 프로세서로서 JVM을 포함하고 있음, JVP의 설정은 운영체제의 허용범위 안에 범주

Interpreter

플랫폼(OS)에 맞는 자바 인터프리터에 의해 자바를 실행
자바 바이트 코드(class)를 각 각의 OS에서 이해할 수 있는 코드(어셈블리)로 변환
시퀀스를 변경하지 않고 런타임에 소스 코드를 한 줄씩 기계어로 변환

JIT(Just In Time) Compiler

AOT(Ahead-of-Time Compilation), 코드를 기계어로 번역하는 해석 포함
Interpreter 를 사용하지 않고 JIT를 사용하여 성능 향상
메서드를 호출할 때 활성화되며 메서드의 컴파일 된 코드를 직접 호출
한 줄씩 읽는 Interpreter 에 반해 속도가 빠르며
Optimization Levels 단계를 변경하여 성능 향상시 메모리, CPU 측 비용이 증가

Program Counter Register


PC 레지스터는 JVM 명령어 주소를 포함

Native Method Stack


응용 프로그램에서 사용되는 모든 기본 메서드 포함

JNI(Java Native Interface)


JVM 위에서 실행되며 하드웨어, 운영 체제 종속 프로그램, 타 언어의 라이브러를
호출하거나 호출받는 것을 가능하게하는 프로그래밍 프레임워크
JNI는 위키백과에서 간단한 사용 예시를 확인 가능

profile
엔지니어

0개의 댓글