Java
[Java] JVM 구조
junga
2022. 9. 8. 21:21
Class Loader
- 클래스 파일을 불러와서 메모리영역(Runtime Data Area)에 저장하는 역할을 한다.
Execution Engine
- Class Loader에 의해 메모리에 적재된 바이트코드를 명령어 단위로 실행하는 역할을 한다.
Garbage Collector
- 사용하지 않거나 필요없는 객체들을 메모리에서 소멸시키는 역할을 한다.
Runtime Data Area
Method Area
- 모든 스레드가 공유하는 메모리 영역
- 클래스, 인터페이스, 메소드, 필드, Static변수 등을 보관한다.
Heap Area
- 모든 스레드가 공유하며, new 키워드로 생성된 객체와 배열이 생성되는 영역이다.
- 메소드영역에 로드된 클래스만 생성이 가능하다.
- Garbage Collector가 참조되지 않는 메모리를 확인하고 제거하는 영역이다.
Stack Area
- 메서드의 작업 공간
- 메서드가 작업을 수행하는 동안 지역변수들과 연산의 중간결과 등을 저장하는데 사용한다.
- 작업을 마치면 할당되었던 메모리는 반환한다.
PC Register
- 스레드가 생성될 때마다 생성되는 영역이다.
- 즉, 현재 스레드가 실행되는 부분의 주소와 명령을 저장하고 있는 영역이다.
Native Method Stack
- 자바 외 언어로 작성된 네이티브 코드를 위한 메모리 영역이다.