티스토리 뷰

Study/LikeLion

자바 메모리 구조

JJIINDOL 2023. 5. 2. 18:06

Runtime Data Areas는 Process로서의 JVM 프로그램을 수행하기 위해 OS로 부터 할당 받는 메모리 영역으로 각각의 목적에 따라 5개의 영역으로 나뉜다.

 

 

JVM 메모리구조

1. 메소드영역(Method Area)

 - 클래스 파일의 바이트코드, 상수, 메소드와 필드의 이름, 타입, 접근 제어자 정보 등을 보관하는 곳이다.

 - 모든 스레드가 공유하는 영역이다.

 - 클래스 로딩 시점에 초기화되며, JVM이 종료될 때까지 유지된다.

2. 힙 영역(Heap)

 - 객체와 배열 등을 생성하는 곳.

 - 프로그램 실행 중 동적으로 메모리를 할당하고 해제한다.

 - Garbage Collector(GC)에 의해 관리된다.

 - 모든 스레드가 공유하는 영역이다.

3. 스 영역(Stack)

 - 메소드 호출과 관련된 정보를 저장하는 곳이다.

 - 메소드가 호출될 때마다 해당 메소드의 지역 변수, 매개 변수, 리턴 값 등이 저장된다.

 - 스택 프레임(Stack Frame)이라는 논리적인 구조로 이루어져 있다.

 - 각 스레드마다 독립적으로 사용되는 영역이다.

4. PC(Program Counter) 레지스터
 - 스레드가 실행 중인 JVM 명령어의 주소를 저장하는 레지스터이다.

 - 스레드마다 독립적으로 사용되는 영역이다.


5. Native 메소드 스택

 - 자바 코드 외부에서 실행되는 네이티브 코드(C, C++)를 위한 스택이다.

 - JNI(Java Native Interface)를 사용하여 자바 코드에서 네이티브 코드를 호출할 때 사용된다.

 - 네이티브 메소드를 호출하면 해당 메소드를 실행하기 위한 스택 프레임이 생성되어 사용된다.

 - 각 스레드마다 독립적으로 사용되는 영역이다.


- 스레드(Thread): 하나의 프로세스 내에서 실행되는 실행 흐름 단위를 의미한다. 각 스레드는 자신만의 실행 흐름을 가지고 동작하며, 다른 스레드와는 독립적으로 실행된다. 스레드를 사용하면 동시에 여러 작업을 처리할 수 있다.

 

- Garbage Collector: 자바에서 동적으로 할당된 메모리 중에서 사용하지 않는 객체를 자동으로 탐지하여 해제하는 기능을 하는 프로그램.

 

- 레지스터: CPU가 명령어를 실행하기 위해 사용하는 고속 메모리이다. CPU가 실행하는 명령어는 레지스터에 저장된 데이터를 기반으로 실행된다.

'Study > LikeLion' 카테고리의 다른 글

TCP / IP  (0) 2023.05.02
CSS의 기초  (0) 2023.03.24
HTML의 기초  (0) 2023.03.23
2주차 - Git  (0) 2023.03.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함