728x90
반응형
이번 글에서는 JVM(Java Virtual Machine)이 무엇인지, 그리고 그 구조에 대해서 알아보도록 하겠습니다.
JVM(Java Virtual Machine)이란?
- 자바 프로그램이 실행되는 환경을 제공하는 소프트웨어입니다.
- 이것은 은 자바 프로그램이 특정 운영 체제에 종속되지 않고 여러 플랫폼에서 동작할 수 있도록 설계되었습니다.
- 자바 소스 코드는 JVM이 이해할 수 있는 바이트 코드로 컴파일되며, JVM은 이 바이트 코드를 해당 플랫폼에 맞게 해석하여 실행합니다. 이로써 자바 프로그램은 한 번 작성하면 여러 운영 체제와 하드웨어에서 실행될 수 있게 됩니다.
JVM(Java Virtual Machine)의 구조는?
1. Class Loader Subsystem (클래스 로더 서브시스템)
- 역할: 클래스 파일들을 JVM 내로 로드하고 메모리에 배치합니다.
- 구성 요소:
- Bootstrap Class Loader: JVM을 시작할 때 가장 먼저 호출되며, 시스템 클래스들을 로드합니다.
- Extension Class Loader: 특정 확장 클래스들을 로드합니다.
- Application Class Loader: 애플리케이션 클래스들을 로드합니다.
2. Runtime Data Area (런타임 데이터 영역)
- 역할: JVM이 프로그램을 실행하는 동안 데이터를 저장하는 공간입니다.
- 구성 요소:
- Method Area: 클래스 수준의 데이터를 저장합니다. 클래스 정보, static 변수, 상수들이 여기에 할당됩니다.
- Heap: 객체 인스턴스가 저장되는 곳입니다. new 키워드로 생성된 객체들은 모두 여기에 저장됩니다.
- Java Stack: 각 스레드마다 생성되며, 메소드 호출과 관련된 데이터를 보관합니다.
- PC Register: 각 스레드마다 현재 수행 중인 JVM 명령의 주소를 저장합니다.
- Native Method Stack: Java 외부의 네이티브 코드를 위한 스택입니다.
3. Execution Engine (실행 엔진)
- 역할: 클래스 로더에서 로드한 바이트 코드를 실행하는 역할을 담당합니다.
- 구성 요소:
- Interpreter: 바이트 코드를 한 줄씩 읽고 실행합니다.
- Just-In-Time (JIT) Compiler: 인터프리터가 반복적으로 실행되는 코드를 발견하면 해당 코드를 네이티브 코드로 컴파일하여 실행 속도를 개선합니다.
- Garbage Collector (GC): 사용하지 않는 객체를 메모리에서 제거하여 효율적인 메모리 관리를 지원합니다.
4. Native Method Interface (네이티브 메소드 인터페이스)
- 역할: Java 코드가 네이티브 코드(일반적으로 C 또는 C++로 작성된 코드)와 상호작용할 수 있는 방법을 제공합니다.
- 구성 요소:
- 네이티브 메소드 라이브러리: 네이티브 코드가 구현된 라이브러리들을 로드하고 호출할 수 있는 인터페이스를 제공합니다.
https://github.com/bottomsUp-99
728x90
반응형
'Java Study' 카테고리의 다른 글
Java 연산자 (0) | 2024.06.17 |
---|---|
JVM(Java Virtual Machine)의 실행 과정 (0) | 2024.06.16 |
자바 타입 변환 (0) | 2024.06.16 |
Java 변수와 타입 (2) | 2024.06.16 |
자바 프로그래밍의 3대 요소 (0) | 2024.06.16 |