메서드 영역 : 프로그램을 실행하는데 필요한 공통 데이터 관리. 이 영역은 프로그램의 모든영역에서 공유
- 클래스 정보 : 클래스의 실행 코드 (바이트 코드), 필드 메서드와 생성자 코드등
- static 영역 : static 변수 보관
- 런타임 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수 보관
스택 영역 : 자바 실행 시, 하나의 실행 스택 생성. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등 포함
- 스택 프레임 : 스택 영역에 쌓이는 네모 박스가 하나의 스택 프레임. 메서드를 호출할 때 마다 하나의 스택 프레임이 쌓이고 메서드가 종료되면 해당 스택 프레임이 제거 됨
힙 영역 : 객체와 배열이 생성되는 영역. 가비지 컬렉션이 이루어지는 주요 영역 더 이상 참조되지 않는 객체는 GC에 의해 제거됨
new 연산자를 통해서 인스턴스를 생성할 때 힙에 생성
GC가 관리함
정적선언하면 객체가 영구적으로 유지됨
뉴 제네레이션 청소 : 마이너GC 1초이내
올드 제네레이션 청소 : 메이저GC
메타스페이스까지 전부다 청소 : 풀GC
스택 영역은 각 스레드 별로 하나의 실행 스택이 생성된다 따라서 스레드 수 만큼 스택이 생성 됨
스택은 스택구조로 되어있다.
스레드마다 스택을 따로 가짐
지역변수 테이블
피연산자 스택 = 1 + 2 * 3 이런거 프리오더같은걸로 집어넣는 것 연산자는 안들어감
메서드 반환값등 저장
C/C++ 스택보다 좀 더 복잡함
지역변수 테이블은 슬롯으로 이루어짐
슬롯에는 번호가 있음 int a = 8이면 a슬롯에 8이저장
Integer b = 8 이면 b슬롯에 참조주솟값저장 본체는 힙메모리에 있음
스택이 꽉차면 스택오버플로우 재귀호출실수등


네이티브 메소드 스택 C++ 네이티브 코드가 실행 될 때 지역 변수 및 자동변수가 사용하는 스택 ㅔ모리
구현하기에 따라 JVM 스택과 합쳐서 사용하기도 함
'Java > JVM' 카테고리의 다른 글
| JVM의 객체 생성 과정 (0) | 2026.05.15 |
|---|---|
| 자바 메모리 모델 (JMM) (0) | 2026.02.02 |
| 메모리 가시성 (1) | 2026.02.02 |
| 스레드 로컬 (0) | 2026.01.23 |
| 리플렉션 (0) | 2026.01.22 |