개발자 쿠키

[Java] JVM 메모리 구조 본문

java

[Java] JVM 메모리 구조

개발자 쿠키 2022. 7. 26. 16:20

  • jvm은 runtime에 data를 올려놓는 공간인 runtime data area를 가지고 있다. 이 공간은 5개로 나뉜다.
  • 뒤의 pc register과 native method stack 영역은 low level의 operation을 하기 위한 메모리 공간임 3개로 나눔
    • Method Area(Static Area)
    • Heap Area
    • Stack Area

 

Static Area (Method Area)

정적인 영역의 메모리

저장되는 목록

  • Type명, Type의 종 저장되는 목록 류, Type의 제어자, 연관된 Interface 정보
  • Runtime Constant Pool - Type의 상수 정보를 저장하는 Pool, 상수는 인덱스를 통해 접근 가능
  • Field Information - 인스턴스 변수의 정보를 저장
  • Method Information - 메서드의 모든 정보를 저장
  • Class Variable - static 키워드로 선언된 변수가 저장된다.

Stack Area에 저장되는 목록

  • Heap 영역에 생성되는 객체의 참조값
  • 원시 타입의 경우 데이터 자체가 저장됨

 

메서드가 호출될 시 할당되는 영역

  • 메서드 호출 시 메서드 내부의 지역 변수 또한 Stack Area에 할당된다.
  • 할당된다는 뜻은 Heap 공간에 객체 데이터를 올리고 그 객체 데이터에 대한 참조값이 할당된다는 뜻이다.
  • 각 스레드는 하나의 Stack 영역을 할당 받는다.
  • 스레드는 각자의 메모리 공간을 가지고 메서드를 수행한다.

 

Heap Area

heap area에 객체의 데이터에 저장된다. 동적으로 생성된 객체(인스턴스)가 저장되는 공간

Heap Area에 생성된 객체들은 다른 객체의 필드 또는 스택에 존재하는 다른 메서드에 의해 참조될 수 있다.

메서드가 샐행되면서 stack영역에는 참조값만을 저장해 놓고 heap area에 객체 데이터를 저장해 놓는다.