코드 그라데이션
JVM Runtime data area + 본문
이 부분이 잘 이해가 안 되어서 역할 구분에 대해 조금 더 찾아보았다.
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