상세 컨텐츠

본문 제목

[자바 CS지식] 자바 JVM 구조

JAVA

by 소란한소란 2024. 3. 4. 14:44

본문

728x90

자바 JVM 구조: 프로그램 실행의 핵심

안녕하세요, 여러분! 오늘은 자바 프로그램이 동작하는 핵심 부분인 자바 가상 머신(JVM)의 구조에 대해 알아보려고 합니다. JVM은 자바 언어로 작성된 프로그램을 실행하기 위한 핵심 환경을 제공하며, 그 안에서 어떤 일이 일어나는지 살펴보도록 하겠습니다.

 

JVM 구조


1. 클래스 로더 (Class Loader)

자바 애플리케이션은 여러 클래스로 이루어져 있습니다. 클래스 로더는 컴파일된 자바 클래스 파일을 읽어들여 JVM이 이해할 수 있는 형태로 메모리에 로딩합니다. 이는 프로그램의 시작 단계로, 클래스들을 사용 가능한 상태로 만들어줍니다.

2. 메모리 영역 (Memory Area)

JVM은 메모리를 여러 영역으로 나눠 효과적으로 관리합니다.

  • 메소드 영역(Method Area): 클래스 수준의 정보(클래스 이름, 메소드, 변수)가 저장됩니다.
  • 힙(Heap): 동적으로 할당된 객체와 배열이 저장되는 영역입니다.
  • 스택(Stack): 메서드 호출과 관련된 지역 변수, 부분 결과값, 호출 스택이 저장됩니다.
  • PC 레지스터(Program Counter Register): 현재 스레드가 실행 중인 부분의 주소를 저장합니다.
  • 네이티브 메서드 스택(Native Method Stack): 자바 외의 언어로 작성된 네이티브 코드를 위한 스택입니다.

메모리 구조

3. 실행 엔진 (Execution Engine)

실행 엔진은 클래스 로더를 통해 메모리에 로딩된 바이트 코드를 해석하고 실행합니다. JIT(Just-In-Time) 컴파일러를 사용하여 바이트 코드를 네이티브 코드로 변환하여 실행 속도를 향상시킵니다.

 

실행엔진 구조

4. 가비지 컬렉터 (Garbage Collector)

비지 컬렉터는 더 이상 사용되지 않는 객체를 자동으로 찾아 제거합니다. 이를 통해 메모리 누수를 방지하고 프로그램의 효율성을 유지합니다.

5. JNI 인터페이스 (Java Native Interface)

JNI 인터페이스는 자바 애플리케이션이 네이티브 라이브러리와 상호 작용할 수 있도록 하는 인터페이스를 제공합니다.

6. 네이티브 메서드 라이브러리 및 인터페이스

JVM은 JNI를 통해 호출되는 네이티브 메서드가 구현된 라이브러리와 네이티브 메서드 인터페이스를 포함합니다.

 

네이티브 메소드

 


 

자바 가상 머신은 이러한 구조를 통해 자바 프로그램을 실행하며, 이를 통해 자바의 특징인 플랫폼 독립성과 메모리 관리를 실현합니다. 이제 여러분도 JVM의 핵심 구조에 대해 조금 더 알게 되셨을 것입니다. 감사합니다!

 

728x90

관련글 더보기