java

자바 메모리 구조

주다애 2023. 12. 16. 16:34

⛏ JVM

Java Virtual Machine의 약자로, 해석하면 자바 가상 머신이다.

(가상 머신 : 프로그램 실행을 위해 물리적 머신과 유사한 머신을 sw로 구현한 것)

즉, JVM은 자바를 실행하기 위한 가상 머신으로 자바의 바이트 코드를 해석하고 실행한다.

 

특징

 

1. 운영체제 종류와 상관없이 JVM만 설치하면 자바 파일 실행이 가능하다.

2. 크게 4가지 영역으로 구성되어있다.

1️⃣ Garbage Collector(GC)

힙 영역에 더이상 참조되지 않는 객체들을 제거한다.

자동으로 실행된다.

 

2️⃣ Class Loader

런타임 시점에 컴파일된 바이트 코드(.class)들을 메모리 할당을 받은 Runtime Data Area로 적재한다.

 

3️⃣ Execution Engine

Class Loader에 의해 Runtime Data Area로 적재된 .class 파일들을 하나의 명령 단위로 읽어서 기계어로 번역하고 명령을 실행한다.

 

4️⃣ Runtime Data Area

JVM의 메모리 영역.

운영체제로 부터 별도로 메모리 공간을 할당받고 데이터를 적재하며 자바 어플리케이션을 실행할 때 사용된다.

Rumtime Data Area는 그 안에서 5가지 영역으로 구분이 되어있다.

Runtime Data Area

자바의 메모리 영역으로 5가지 영역으로 구분된다.(메서드 영역, 스택 영역, 힙 영역, PC Register, Native Method Stack)

이 중에서 3가지 영역을 알아볼 것이다.

🎯 메서드 영역(Method Area)

클래스 정보를 보관한다. 이 정보들은 프로그램을 실행하는데 필요한 공통 데이터들로 프로그램의 모든 영역에서 공유한다.

static 변수들을 보관해서 Static Area라고도 한다.

 

🎯 스택 영역(Stack Area)

자바 실행 시 하나의 실행 스택이 생성된다.

메서드 호출 시마다 각각의 스택 프레임이 스택 영역에 쌓인다. 그 곳에는 지역 변수, 연산 결과, 메서드 호출 정보 등을 포함하며 메서드가 종료되면 스택 영역에서 없어진다.

스레드 수만큼 스택 영역이 생성된다.

 

🎯 힙 영역(Heap Area)

new 키워드를 통해 생성된 객체들이 생성되는 영역이다. GC가 이루어지는 영역이며 더이상 참조되지 않는 객체들은 GC를 통해 힙 영역에서 제거된다.

배열도 힙 영역에 생성된다.

모든 스레드가 공유한다.

★ 클래스의 멤버 변수는 힙 영역에 메모리가 할당되지만 메서드는 메서드 영역에 할당된다.(메서드는 공통된 코드를 공유하기 때문!)

 

 

본 게시물은 인프런 김영한님의 김영한의 실전 자바 - 기본편을 듣고 작성된 게시물입니다.

 

참고자료

https://honbabzone.com/java/java-jvm/

 

JVM( Java Virtual Machine )이란

JAVA를 공부하는 데 있어 기본이 되는 JVM이 무엇인지 학습하고, JVM의 메모리 구조와 Garbage collector, Execution Engine, Class Loader에 대한 기본적인 설명 등 JVM이 어떻게 돌아가는지에 대한 기초를 잡는

honbabzone.com

https://velog.io/@chancehee/Java-JVM

 

[Java] - JVM

JVM(Java Virtual Machine)

velog.io

 

'java' 카테고리의 다른 글

상속과 메모리 구조  (0) 2023.12.21
자바 main 메소드는 왜 static일까?  (0) 2023.12.19
final 키워드(변수, 상수)  (0) 2023.12.14
생성자  (0) 2023.12.12
error-Your build is currently configured to use Java 17.0.7 and Gradle 6.8.  (1) 2023.12.05