JVM(Java Virtual Machine) 이란?

JVM은 자바 바이트 코드(.class)를 실행하는 가상 머신이다.

JavaOS에 상관없이 동작할 수 있도록 해주며 GC(Garbage Collection, 메모리 관리)를 제공한다.

 

 

JVM 의 구조

출처 : https://howtodoinjava.com/java/basics/jdk-jre-jvm/#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