자바의 메모리 구조

도도링·2023년 5월 27일
0

자바 스터디

목록 보기
2/4

JVM은 자바 프로그램을 컴파일해서 나온 결과인 바이트코드를 실행시켜주는 가상머신이다.

오늘은 JVM중에서도 Run-time Data Area에 대해 알아보고자 한다.

-목차
1. Method 영역
2. Heap 영역
3. Thread 영역
3-1. PC Registers
3-2. Java Stack
3-3. Native Method Stacks

Runtime Data Area는 JVM이 프로그램을 수행하기 위해 운영체제로부터 할당받는 메모리 영역이다. Runtime Data Areas는 각각의 목적에 따라 5개의 영역으로 나뉘게 된다.

1. Method 영역

모든 Thread가 공유하는 메모리 영역으로서, 클래스, 인터페이스, 메소드, 필드,
static 변수 등의 바이트 코드를 보관한다.

2. Heap 영역

Heap영역 또한 모든 Thread가 공유하며,
new 키워드로 생성된 객체와 배열이 생성되는 영역이다. JVM당 역시 하나만 생성이 되고, 
Garbage Collection의 대상이 되는 영역이다.

3. Thread 영역

3-1. PC Registers

Thread가 생성될 때마다 생기는 공간으로 Thread가 어떤 명령을 실행하게 되는지에 관하여
기록하며 JVM에서 사용된 명령의 주소 값을 저장하게 된다.

3-2. Java Stack

메소드 호출 시마다 stack영역에 각각의 스택 프레임이 생기고 그 안에 메소드를 호출한다.
메소드가 호출될 때 메모리에 할당되고 종료되면 메모리에서 사라진다.

3-3. Native Method Stacks

자바 외의 언어로 작성된 네이티브 코드를 위한 메모리 영역이다.
참조
https://tecoble.techcourse.co.kr/post/2021-08-09-jvm-memory/
https://steady-coding.tistory.com/305
https://www.holaxprogramming.com/2013/07/16/java-jvm-runtime-data-area/

0개의 댓글