런타임 데이터 영역
- 메소드 영역
- 힙 영역
- 쓰레드 단위 별 영역(스택 영역, PC레지스터)
메소드 영역
- JVM이 읽어들인 각종 타입 정보, 상수, 정적 변수 정보가 저장되는 영역
- JIT컴파일러가 번역한 기계어 코드를 캐싱하기 위한 메모리 공간으로 활용
- Java 8 부터는 PermGen이 아니라 Metaspace에 속함
Metaspace는 JVM힙이 아니라 네이티브 메모리에서 관리하며 크기가 동적으로 달라질 수 있음
Runtime constant pool
- 클래스 버전, 필스, 메서드, 인터페이스 등 클래스 파일에 포함된 정보 및 각종 리터럴, 심볼 참조가 저장되는 영역
- 클래스 로더가 클래스를 로드할 때 상기 정보들을 저장
- 동적으로 운영되며 런타임에 새로운 상수가 추가될 수 있음
터미널 - out\production\프로젝트이름\Main.class 파일 javap -v Main 을 치면 정보들이 나옴
이것만 쳐봐도 constant pool에 들어간애들이 얼마나 많은지 확인 가능
힙영역과 스택은 따로 설명
'JAVA&스프링' 카테고리의 다른 글
| JAVA JVM 힙 영역과 GC(Garbage Collector) (1) | 2025.06.13 |
|---|---|
| JAVA 스택 영역(Stack area) (0) | 2025.06.13 |
| JAVA 클래스 로더(Class loader) 및 로딩 과정 (1) | 2025.06.13 |
| JAVA JVM 구성요소 정리 (0) | 2025.06.13 |
| JAVA와 C++ 메모리 관리 차이 (0) | 2025.06.13 |