Java
JAVA JVM(Java Virtual Machine)
차가운개발
2024. 12. 2. 19:11
JVM의 기능은 크게 2가지로 말할 수 있다.
1. 자바 프로그램이 어느 기기나 운영체제에서도 실행될 수 있도록 하는 것
2. 프로그램 메모리를 관리하고 최적화 하는 것
ㅇ 구성 요소
- Class Loader
Java 바이트 코드를 JVM에 로드한다
클래스 파일을 읽고 검증하며 메모리에 적재한다
런타임 시 필요한 클래스들을 동적으로 로드한다 - 실행엔진
바이트코드를 실제 실행 가능한 형태로 변환한다
ㅇ 인터프리터
ㅇ JIT 컴파일러 - 가비지 컬렉션
사용되지 않는 메모리(객체)를 자동으로 해제하여 메모리 누수를 방지한다 - Runtime Data Area(메모리 영역)
JVM이 프로그램 실행 중 데이터를 저장하고 관리하는 메모리 구조
ㅇ Method Area : 클래스 정보, 메서드, 상수 풀 등이 저장
ㅇ Heap : 객체가 저장 되는 공간 GC의 주요 관리 대상
ㅇ Stack : 스레드마다 별도 생성 메서드 호출 시 프레임으로 관리
ㅇ PC Register : 현재 실행 중인 명령의 주소 저장(스레드가 어떤 명령어로 실행되어야할지 기록)
ㅇ Navtive Method Stack : 실제 실행될 수 있는 기계어로 작성된 프로그램을 실행 시키는 영역 - Native Interface
C, C++ 같은 네이티브 언어로 작성된 프로그램과 상호작용할 수 있도록 지원한다.