Language/Java

[Java] 자바 메모리 구조

한비Skyla 2025. 5. 1. 16:44

자바 프로그램이 실행되면 JVM (자바 가상 머신)이 메모리를 할당 받고, 그 메모리를 용도에 따라 여러 영역으로 나누어 관리함.

그 메모리 공간을 크게 메서드영역, 스택 영역, 힙 영역으로 구분한다. 

 

메서드 영역

프로그램을 실행하는데 필요한 공통 데이터.

- 클래스 정보 : 클래스의 실행 코드, 필드, 매서드와 생성자 코드. 

- static 영역 : static 변수 보관

- 런타임 상수 풀 : 프로그램을 실행하는 데 필요한 공통 리터럴 상수 보관. 

 

스택 영역

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

- 스택 프레임 : 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함함.

- 메서드를 호출할 때마다 하나의 스택 프레임이 쌓임. 

- 각 스레드 별로 하나의 실행 스택이 생성됨. 스레드 수 만큼 스택이 생성. 

- 메서드 지역변수로 참조형 데이터 타입이 필요한 경우, 실질적 인스턴스를 위한 메모리 공간은 힙 영역에 생성.

  스택 메모리에는 해당 영역의 주소값을 저장함. 

 

힙 영역 

- 프로그램이 실행되면서 동적으로 생성되는 데이터들이 저장되는 공간. 

- 참조형 데이터 타입을 갖는 객체와 배열이 생성되는 영역.

- 가비지 컬렉션이 이루어지는 주요 영역.

- 스택 영역과 다르게 보관되는 메모리가 호출이 끝나더라도 삭제되지 않고 유지됨.

> 어떤 참조 변수도 힙 영역에 있는 인스턴스를 참조하지 않게 되면 가비지 컬렉터에 의해 청소 됨. 

 

 

 

[Java] 자바의 메모리 구조

Java Virtual Machine(JVM) 자바의 메모리 구조에 대해 알아보기 전에, 우선 JVM에 대해서 이야기 할 필요가 있다. 자바의 가장 큰 특징 중 하나가 바로 플랫폼에 독립적이라는 것인데, 이것은 자바로 작

velog.io

 

 

☕ 그림으로 보는 자바 코드의 메모리 영역(스택 & 힙)

자바의 메모리 영역 이번 포스팅에선 자바(JAVA)를 사용하는 입장에서 알아야 할 메모리 구조 및 특징에 대해서 알아보려고 한다. 자바 프로그램이 실행되면 JVM(자바 가상 머신)은 OS로부터 메모

inpa.tistory.com

 

 

 

 

'Language > Java' 카테고리의 다른 글

[Java] 컨텍스트 스위칭  (1) 2025.04.22
[Java] 멀티스레드, 멀티태스킹, 스레드  (1) 2025.04.20
[Java] Optional  (1) 2024.07.06
[Java] Stream  (0) 2024.06.17
[Java] boolean , if문  (0) 2024.06.08