본문 바로가기
개발공부/Java

[JVM ] JVM 메모리 (Runtime Data Area)

by sangyeon 2022. 1. 4.
728x90

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++)을 실행하기 위해 사용되는 공간

- 다른 스레드와 공유하지 않고 스레드마다 가지는 공간

728x90