자바의 JVM
2024. 3. 1. 17:43ㆍJava
반응형
JVM 이란 무엇인가
Java Virtual Machine 의 약자로, 자바로 작성된 프로그램을 실행시켜 주는 가상의 장치이다.
JVM 은 플랫폼 독립적이므로, 실행 환경에 구애받지 않는다.
JVM 은 자바 코드를 소스 내 main() 메서드를 실행함으로써 동작한다.
JVM 은 JRE (Java Runtime Environment) 의 일부이다.
JVM 의 역할
JVM 은 아래 역할을 수행한다
- 코드 로딩
- 코드 검증
- 코드 실행
- 런타임 환경 제공
JVM 은 아래 영역에서 정의된다
- 메모리 영역
- 클래스 로딩
- 레지스터
- Garbage Collect 힙
- 치명적 에러 리포트
JVM 의 구조 (Architecture)
JVM 은 아래 계층의 구성요소들이 상호작용하는 구조를 가지고 있다.
- Classloader
- Memory Area (Class Area, Heap, Stack, PC Register, Native Method Stack)
- Execution Engine
- Native Method Interface
- Java Native Libraries
Classloader
Classloader 는 클래스 파일을 읽어들이는 JVM 하위 시스템이다. 자바로 작성된 프로그램을 실행할 때마다 기동되며, 3가지 종류가 있다.
- Bootstrap : rt.jar 파일을 읽어 자바 내장 패키지 (java.lang, java.net, java.util, java.io 등) 들을 로딩한다.
- Extension : Bootrstrap 의 하위 로더로, $JAVA_HOME/jre/lib/ext 경로에 포함되어 있는 jar 파일들을 로딩한다.
- System/Application : Extension 의 하위 로더. 프로젝트의 클래스 파일들을 로딩한다.
public class ClassLoaderTest {
public static void main(String[] args) {
// Application Classloader
Class c = ClassLoaderTest.class;
System.out.println(c.getClassLoader()); // jdk.internal.loader.ClassLoaders$AppClassLoader
// Bootstrap Classloader (built-in class)
System.out.println(String.class.getClassLoader()); // null
}
}
Class (Method) Area
Class Area 는 런타임 상수, 필드, 메서드, 인스턴스 변수들을 저장하는 공간
Heap
런타임에 생성된 객체들이 위치하는 공간
Stack
로컬 변수와 메서드의 중간 실행 결과들이 저장되는 공간
Program Counter Register
실행된 JVM 의 주소가 저장되는 공간
Native Method Stack
어플리케이션 내 사용되는 모든 native method 가 저장되는 공간
Execution Engine
- 가상 실행장치
- 바이트 코드 인터프리터
- 컴파일러
Java Native Interface
다른 언어 환경과 함께 동작하기 위한 (OS 등 다른 프로그램) 프레임워크
Resources
반응형
'Java' 카테고리의 다른 글
자바의 쓰레드 관리 (0) | 2024.03.02 |
---|---|
자바의 Garbage Collection (0) | 2024.03.02 |
자바의 Stream (1) | 2024.02.29 |
자바의 제네릭 (Generic) (1) | 2024.02.28 |
자바의 네트워킹과 소켓 통신 (1) | 2024.02.27 |