코드 그라데이션

JVM Runtime data area + 본문

백엔드 면접

JVM Runtime data area +

완벽한 장면 2024. 3. 28. 18:29

이 부분이 잘 이해가 안 되어서 역할 구분에 대해 조금 더 찾아보았다.

JVM Runtime data area

 

메소드 영역 (Method Area)

  • 메소드 영역은 JVM의 런타임 데이터 영역 중 하나로, 클래스에 대한 정보를 저장한다.
  • 클래스 로더에 의해 로드된 클래스의 바이트 코드, 정적 변수(static variable), 상수, 메소드 코드 등이 여기에 저장된다.
  • 모든 스레드가 공유하는 영역으로, JVM이 시작될 때 생성되며 프로그램이 종료될 때까지 유지된다.
  • Java 7 이전에는 Permanent Generation으로 알려져 있었지만, Java 8부터는 Metaspace로 대체됐다.

 

힙 영역 (Heap Area)

  • 힙 영역은 동적으로 생성된 객체 인스턴스와 배열이 저장되는 영역이다.
  • 프로그램 실행 중에 필요에 따라 메모리가 동적으로 할당되고 해제된다.
  • Young Generation과 Old Generation으로 나뉘며,
  • Young Generation은 새로 생성된 객체가 할당되는 곳 이고
  • Old Generation은 Young Generation에서 일정 기간 동안 살아남은 객체들이 이동하는 곳 이다.

 

스택 영역 (Stack Area)

  • 스택 영역은 각 스레드마다 개별적으로 할당되며, 메소드 호출과 관련된 지역 변수, 매개변수, 복귀 주소 등을 저장한다.
  • 메소드가 호출될 때마다 스택 프레임이 생성되고, 메소드가 종료될 때 해당 스택 프레임이 제거된다.
  • 스택은 후입선출(LIFO, Last In First Out) 구조를 가지고 있다. (쭉 쌓인다는 느낌) 

 

프로그램 카운터 레지스터 (Program Counter Register)

  • 프로그램 카운터 레지스터는 현재 실행 중인 스레드가 다음에 실행할 명령어의 주소를 저장한다.
  • 각 스레드마다 별도로 존재하며, 스레드가 다른 스레드로 전환될 때 현재 상태를 저장하고 다시 복구하는 데 사용된다. 

 

네이티브 메소드 스택 (Native Method Stack)

  • 네이티브 메소드 스택은 자바 언어 이외의 언어로 작성된 네이티브 코드(예: C 또는 C++)를 실행하는 데 사용된다.
  • 자바 언어 외부에서 호출되는 네이티브 메소드의 정보를 저장하고, 이 스택은 자바 스택과는 별도로 관리된다.

 

728x90

'백엔드 면접' 카테고리의 다른 글

GC와 JVM에 대해서  (0) 2024.03.30
Heap 영역에 대해 ++  (0) 2024.03.29
JVM 기본 구조(2)  (0) 2024.03.27
JVM 기본 구조 (1)  (0) 2024.03.27
SSL인증서는 어디에 설치되는가?  (0) 2024.03.26
Comments