자바 프로그램이 실행되면 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 |