Java

[Java] JVM 구조

junga 2022. 9. 8. 21:21

https://jeong-pro.tistory.com/148

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

  • 자바 외 언어로 작성된 네이티브 코드를 위한 메모리 영역이다.