[자바] Java 메모리 구조

Romy·2023년 5월 29일
0

자바

목록 보기
6/11

운영체제 위에 JVM이 올라가고, 그 JVM 만에 메모리 구조가 생긴다.

자바 메모리는 크게 다섯가지가 존재한다. 쓰레드별로 PC Register, JVM Stack, Native Method 가 존재하고 공통적으로 Method Area, Heap 이 존재한다.

Java 메모리 구조

1️⃣ PC Register

- 각 쓰레드마다 하나씩 생성된다.
- 현재 수행 중인 JVM 명령의 주소 값이 저장된다.

2️⃣ Stack

- 각 쓰레레드마다 하나씩 생성된다.
- 함수 안에서 사용되는 값들(매개변수, 지역변수 리턴 값 등)이 저장되는 공간이다.
- 메서드가 호출될 때 LIFO로 마지막에 생성된 것이 가장 먼저 지워진다.

3️⃣ Native Method Stack

- 각 쓰레드마다 하나씩 생성된다.
- 자바 외 작성된 코드(C/C++)들이 저장되는 공간이다.
- JNI(Java Native Interface)라는 포준 규약을 제공한다.

4️⃣ heap

- 모든 쓰레드에게 공유된다.
- new 명령어로 생성된 인스턴스와 객체가 저장되는 구역.
- 공간이 부족해지면 garbage collection이 실행된다.

5️⃣ Method Area

- 모든 쓰레드에게 공유된다.
- 각 클래스 별로 전역변수, 정적변수, 메소드 정보들이 저장되는 공간이다.



💡 면접질문 및 답변 예시

Q 자바의 메모리 구조에 대해서 설명해보세요


자바 메모리 구조는 크게 5가지 영역으로 구분 되는데요.

우선 쓰레드마다 pc 레지스터 , JVM stack, Native Method Stack 이 있구요.

그리고 쓰레드 공통으로는 HeapMethod Area이 있습니다

PC 레지스터는 현재 수행중인 JVM 명령어가 들어가있구요.

그리고 JVM Stack은 호출된 메소드의 매개변수, 지역변수, 리턴정보들이 저장됩니다.

Native Method Stack은 자바 외의 언어인 C나 C++ 같은 것들을 수행하기 위한 영역이구요.

Method Area는 클래스별로 전역변수, 정적변수, 메소드 정보들이 저장 되게 됩니다

마지막으로 Heap 영역에서는 이제 런타임 중에 생성되는 객체들이 동적으로 할당되는 곳 입니다




참고

[JAVA] 자바 프로그램 실행 과정 및 기본 구조

profile
👩‍💻 IT Engineering

0개의 댓글