본문

[2017.09.08] 19. JVM 메모리 영역

JVM 메모리 영역

JVM 메모리 영역은 Runtime Data Area라고 불린다. JVM이 운영체제 위에 실행되면 할당 받는 메모리 영역이다. JVM 메모리 영역의 구성은 아래 그림과 같다.


메소드 영역(Method Area)

컴파일 결과인 클래스(*.class)를 클래스 로더로 읽어 생성된다. 이 영역은 JVM이 시작할 때 생성되모든 쓰레드가 공유하는 영역이다.


JVM 스택 영역 (JVM Stack Area)

각 쓰레드마다 하나씩 존재하며 쓰레드가 시작될 때 할당되는 영역이다. 자바에서 기본적으로 main 쓰레드 1개가 존재하고 쓰레드를 생성할 때마다 1개씩 증가한다.


힙 영역(Heap Area)

객체와 배열이 생성되는 영역이다. 생성된 객체와 배열은 JVM 스택 영역의 변수나 객체에서 참조한다. 그렇기 때문에 JVM 스택 영역에서 변수나 객체가 참조하지 않으면 의미가 없어진다. 이렇게 의미가 없어지면 JVM은 Garbage Collector를 통해 해당 변수나 객체를 힙 영역에서 자동으로 제거한다.


Garbage Collection의 자세한 내용은 추후 포스팅할 예정이다.

Heap의 자세한 구조

Heap - Constant Pool

idk 1.7 이후 Constant Pool이 Heap안의 Permanent영역에서 Heap 영역으로 확장 with 공식 문서

가비지 컬렉션 언급, 추후 링크

#JVM #JVM 메모리 영역 #runtime data area #java 메모리 구조 #java memory

공유

댓글