JVM(Java Virtual Machine) 이란?
JVM은 자바 바이트 코드(.class)를 실행하는 가상 머신이다.
Java가 OS에 상관없이 동작할 수 있도록 해주며 GC(Garbage Collection, 메모리 관리)를 제공한다.
JVM 의 구조
JVM 메모리 구조
- Method Area(메소드 영역)
클래스 변수의 이름, 타입, 접근 제어자 등과 같은 클래스와 관련된 정보를 저장한다.
그 외에도 static 변수, 인터페이스 등이 저장된다.
- Heap Area(힙 영역)
new를 통해 생성된 객체와 배열의 인스턴스를 저장하는 곳이다.
가비지 컬렉터는 힙 영역을 청소하며 메모리를 확보한다.
- Stack Area(스택 영역)
메소드가 실행되면 스택 영역에 메소드에 대한 영역이 1개 생긴다.
이 영역에 지역변수, 매개변수, 리턴값 등이 저장된다.
- PC register(PC 레지스터)
현재 쓰레드가 실행되는 부분의 주소와 명령을 저장한다. (CPU의 레지스터와 다름)
- Native Method Stack(네이티브 메소드 스택)
자바 외의 언어(C, C++ 등)로 작성된 코드를 위한 메모리 영역이다. JNI를 통해 사용된다.
가비지 컬렉터(Garbage Collector) 란?
'더이상 참조되지 않는 메모리'인 가비지를 청소해주는 JVM의 실행 엔진의 한 요소이다.
JVM은 new와 같은 연산에 의해 새롭게 생성된 객체들 중에서 더이상 참조되지 않는 객체를 정리해준다.
가비지 컬렉터는 Heap 영역을 위주로 탐색하며 메모리를 정리한다.
'CS > Java' 카테고리의 다른 글
Overloading 과 Overriding (0) | 2021.11.18 |
---|---|
Java Collection 과 Generic (0) | 2021.11.18 |
Java 의 데이터 타입 / 접근제한자 / static (0) | 2021.11.10 |
Java 의 특징과 구성 요소 (0) | 2021.11.10 |
객체 지향 프로그래밍(OOP) 이란? (0) | 2021.11.10 |