힙과 스택

Posted by sJun on December 05, 2020 ·

JVM은 운영체제에서 할당받은 메모리 영역을 다음과 같은 세부 영역으로 나눈다.

  • Heap

  • Stack

  • Method

Heap영역은 객체와 배열이 생성되는 영역이다. 중요한 것은 Heap 영역에서 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체의 필드에서 ‘참조’한다.

한마디로 기본 타입이 아닌 Object 타입과 같은 무거운 타입의 경우 Call by Value가 아닌 무조건 Call by Reference로 값을 가져오는 것이다.

JVM의 스택 영역은 스레드 한 개당 하나가 생성되고 따로 쓰레드를 지정하지 않으면 메인 쓰레드 하나이므로 JVM 스택도 하나가 된다.

Method 영역은 코드에서 사용되는 클래스들을 클래스 로더로 읽어, 클래스별로 런타임 상수풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류해서 저장한다.

Method 영역은 JVM이 시작할 때 생성되고 모든 쓰레드가 공유하는 영역이다.