[Java] JVM 의 Runtime Data Area에 대해

개발하기 좋은날·2023년 12월 19일

자바 스터디

목록 보기
2/6

개요

자바의 기본기를 다지기 위한 스터디를 진행하던 도중 "이것이 자바다"라는 책을 읽고 Runtime Data Area에 대해 정리해보았습니다.



Runtime Data Area

Java는 멀티 스레드 환경으로 모든 스레드는 Heap, Method Area 를 공유합니다.

이 영역은 5가지 세부 영역으로 나눠집니다.

  • PC Register
  • JVM Stacks
  • Native Method Stacks
  • Heap
  • Method Area

PC Register

JVM은 스택 기반의 가상머신으로, CPU에 접근하지 않고 Stack에서 주소를 뽑아서 가져오고 이를 PC Register 에 저장

현재 어떤 명령을 실행해야 할 지에 대한 기록을 담당

JVM Stacks

호출된 메서드의 파라미터, 지역 변수, 리턴 값 및 연산 값 등이 저장되는 영역

프로그램 실행 시 임시로 할당되었다가 메서드를 빠져나가게 되면 소멸되는 특성의 데이터들이 저장되는 영역

메서드 호출 시마다 스택에 각각의 스택 프레임이 생성되고, 수행이 끝나면 스택 포인트에서 해당 프레임을 제거

Native Method Stacks

Java 이외의 언어에 제공되는 Method의 정보가 저장되는 공간

Java Native Interface를 통해 바이트 코드로 저장

Kernel이 자체적으로 Stack을 잡아 독자적으로 프로그램을 실행시키는 영역

Heap

Garbage Collector의 대상이 되는 영역

객체를 동적으로 생성하게 되면 인스턴스가 Heap 영역의 메모리에 할당

단, 레퍼런스 변수의 경우, Heap에 인스턴스가 저장되는 것이 아닌 포인터가 저장됨

Method Area

클래스 정보를 처음 메모리에 올릴 때 초기화되는 대상을 저장하기 위한 영역

profile
말보단 행동으로

0개의 댓글