런타임 데이터 영역
1. 프로그램 카운터
- 스레드 프라이빗 메모리
- 현재 실행 중인 스레드의 '바이트코드 줄 번호'를 저장함
2. 자바 가상 머신 스택
- 스레드 프라이빗 메모리
- 지역 변수 테이블, 피연산자 스택, 동적 링크, 메서드 반환값 등의 정보를 저장
- 지역 변수 테이블에 저장되는 데이터
- 기본 데이터 타입 : bolean, byte, char, short, int, float, long, double 타입의 변수를 저장한다.
- 객체 참조
- 반환 주소 타입 : 바이트코드 명령어의 주소로 메서드 종료시 돌아가야할 주소를 저장한다.
- 지역 변수 테이블에 저장되는 데이터
3. 네이티브 메서드 스택
- 네이티브 메서드를 사용할 때 사용하는 스택
4. 자바 힙
- 모든 스레드가 공유
- 객체 인스턴스를 저장하는 역할
- 새로운 인스턴스에게 할당해 줄 힙 공간이 부족하고, 힙을 더이상 확장할 수 없는 경우에는 OutOfMemoryError를 던짐
5. 메서드 영역
- 모든 스레드가 공유
- 가상 머신이 읽어 들인 타입 정보, 상수, 정적 변수, JIT 컴파일러가 컴파일한 코드 캐시 등을 저장
- 런타임 상수 풀
- 가상 머신이 클래스를 로드할 때 클래스 버전, 필드, 메서드, 인터페이스 등 클래스 파일에 포함된 설명 정보에 더해 컴파일 타임에 생성된 다양한 리터럴과 심벌 참조를 런타임 상수 풀에 저장함.
6. 다이렉트 메모리
- 가상 머신 런타임에 속하지 않는 메모리
- java 1.4 에 NIO 가 도입되면서 힙이 아닌 메모리를 직접 할당하여 사용할 수 있게 되었음
- 물리 메모리 한계를 넘어가서 확장을 시도하면 OutOfMemoryError 가 발생함
반응형
'JAVA' 카테고리의 다른 글
Checked Exception 과 Unchecked Exception (0) | 2023.06.21 |
---|---|
AOP 용어 정리 (0) | 2023.04.16 |
try-with-resource (0) | 2022.07.14 |
sum 에 wrapper class를 쓰면? (0) | 2022.05.03 |
도메인 주도 설계 - 1부 동작하는 도메인 모델 만들기 (0) | 2022.04.19 |