Java Study

JVM(Java Virtual Machine)의 구조

Z00_HWAN_99 2024. 6. 16. 23:36
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

 

bottomsUp-99 - Overview

Backend Developer. bottomsUp-99 has 10 repositories available. Follow their code on GitHub.

github.com

 

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