Runtime Data Area
: JVM 메모리를 뜻 한다.
이 영역은 5개의 영역으로 나뉘는데 아래와 같다.
- Method Area
- Heap
- Stack
- PC Register
- Native Method Area
이 중, Method Area와 Heap 영역은 모든 스레드가 공유하는 공간이고 나머지 Stack, PC Register, Native Method Area의 경우는 각 스레드가 하나 씩 가지고 있는 공간이다.
1. Method Area (메소드 영역)
- class data와 static 변수가 저장되는 공간
- 모든 스레드가 공유하는 공간
- JVM이 실행될 때 생성 됨
2. Heap (힙 영역)
- new를 통해 동적으로 생성되는 객체가 저장되는 공간
- Heap에 저장된 데이터는 메모리 관리가 필요한 GC 대상임
- 만약 참조하지 않는 데이터라면 GC에 의해 제거 됨
- 모든 스레드가 공유하는 공간
- JVM이 실행될 대 생성 됨
3. Stack (스택 영역)
- 스택 프레임(Frame)이 저장되는 공간
(프레임이란 메소드 정보, 메모리 파라미터, 지역변수, 참조 주소값이 저장되는 공간)
- 다른 스레드와 공유하지 않고 스레드마다 가지는 공간
- 프레임은 메소드가 실행될 때 Stack에 push하여 추가되고 메소드가 종료되면 pop 되어 제거 됨
4. PC Register
- Program Counter Register의 약자로 JVM이 현재 실행할 명령어의 주소 값을 저장하는 공간
즉, 코드의 몇 번째 줄을 실행하면 되는지 저장하는 공간
- 다른 스레드와 공유하지 않고 스레드마다 가지는 공간
5. Native Method Area
- JAVA가 아닌 Native 언어(C/C++)을 실행하기 위해 사용되는 공간
- 다른 스레드와 공유하지 않고 스레드마다 가지는 공간
'개발공부 > Java' 카테고리의 다른 글
[JVM GC] GC 종류와 동작 방식과 G1GC 튜닝 포인트 (0) | 2022.01.05 |
---|---|
[JVM GC] Garbage Collector에 대하여 (0) | 2022.01.04 |
[Java] 14. 객체 간의 상속 (0) | 2021.12.03 |
[Java] 13. 객체 배열을 구현한 클래스 - ArrayList (0) | 2021.12.01 |
[Java] 12. 자료를 순차적으로 관리하는 방법 - 배열(Array) (0) | 2021.11.29 |