JVM동작원리

LJM·2023년 9월 8일
0

Java

목록 보기
21/33
  1. 프로그램 로딩
    자바 소스 코드(.java 파일)는 자바 컴파일러에 의해 바이트코드(.class 파일)로 변환됩니다.
    이 바이트코드는 파일 시스템이나 네트워크 등에서 JVM으로 로드됩니다.
  2. 클래스 로더(Class Loader)
    JVM의 클래스 로더는 필요한 .class 파일을 로드하여 Method Area에 저장합니다.
  3. 메모리 구조
    JVM은 메모리를 다음과 같은 영역으로 나눕니다:

Method Area: 클래스 정보, 메타데이터, 정적 변수 등이 저장됩니다.
Heap Area: 객체와 배열이 저장됩니다. 이 영역은 가비지 컬렉션의 대상입니다.
Stack Area: 각 스레드에 대한 메서드 호출과 로컬 변수 정보가 저장됩니다.
PC Registers: 현재 실행 중인 명령의 주소를 저장합니다.
Native Method Stack: 네이티브 메서드의 호출 정보가 저장됩니다.
4. 실행 엔진(Execution Engine)
바이트코드는 실행 엔진에 의해 해석되거나 Just-In-Time (JIT) 컴파일러를 통해 네이티브 코드로 변환되어 실행됩니다.
5. 네이티브 인터페이스
자바 네이티브 인터페이스(Java Native Interface, JNI)를 통해 네이티브 라이브러리와 상호작용할 수 있습니다.
6. 실행과 종료
프로그램이 실행되면, 메서드 호출, 객체 생성, 가비지 컬렉션 등이 JVM 내에서 관리됩니다.
프로그램이 종료되면, 사용한 리소스와 메모리는 해제됩니다.
JVM은 이러한 과정을 통해 자바 프로그램을 플랫폼에 독립적으로 실행할 수 있게 해줍니다.

profile
게임개발자 백엔드개발자

0개의 댓글