Java_003 (20250502)


Java

자바의 메모리 영역

자바 메모리 영역 완전 요약

영역 정의 JVM 구성 요소
메소드 영역 클래스, 메서드, static 변수 등의 설계 정보 저장 공간 공유 메모리
힙 영역 new로 생성된 객체와 그 인스턴스 변수들 저장 공간 공유 메모리
스택 영역 스레드별 메서드 호출 정보, 지역 변수 저장 공간 스레드 전용 메모리
PC 레지스터, 네이티브 메소드 스택 등 스레드 제어용 내부 구조 고급 주제에서 다룸

비유 (기억하기 쉽게 비유)

🏢 건물(=메모리/RAM) 안에는

🧑‍💻 직원 = 스레드

연결성 (어떻게 상호작용하는가?)

비교 (각 영역 간 차이)

항목 메소드 영역 힙 영역 스택 영역
소속 공유 공유 스레드 전용
저장 대상 클래스, static 객체, 인스턴스 변수 메서드 호출 정보, 지역 변수
생성 시점 클래스 로딩 시 new 연산 시 스레드 시작 시
소멸 시점 JVM 종료 시 GC 대상 메서드 종료 시 pop

한계와 오류

한계 상황 오류 원인
스택이 꽉 찼을 때 StackOverflowError 재귀 무한 호출, 메서드 과도한 호출
힙이 꽉 찼을 때 OutOfMemoryError 객체 과다 생성, GC 불능 상태
코드 메모리 영향
Person 클래스 정의 메소드 영역에 저장
new Person() 힙에 객체 저장
p 변수 스택 영역에 저장 (참조 변수)
p.name = "Alice" 힙에 있는 객체의 필드 값 변경