- Method Area
- 프로그램 실행 시 클래스 정보가 저장되는 영역
- .class 파일의 클래스 정보가 올라가는 곳
- 클래스의 메서드 정보, static 변수, 런타임 상수풀 등이 저장
- 모든 객체가 공유하는 공용 메모리 영역
- Stack Area
- 메서드 호출 시 Stack Frame이 생성되는 구조
- 지역 변수와 메서드 호출 정보가 저장
- 후입선출(LIFO) 구조
- 메서드 실행이 끝나면 Stack에서 제거됨
- Heap Area
- new 키워드로 생성된 객체가 저장되는 영역
- 객체의 실제 데이터가 저장
public class MemoryExample {
// static 변수 → Method Area에 저장
static String schoolName = "Java School";
public static void main(String[] args) {
// 지역 변수 dog → Stack Area에 저장
// new Dog() 객체 → Heap Area에 저장
Dog dog = new Dog("Coco", 3);
// main 메서드 호출 정보도 Stack에 쌓임
dog.introduce();
} // main 종료 시 Stack 영역의 지역 변수 제거
}
class Dog {
// 객체의 실제 데이터 → Heap Area에 저장
String name;
int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
// 지역 변수 message → Stack Area에 저장
String message = "안녕하세요!";
System.out.println(message);
System.out.println("이름: " + name);
System.out.println("나이: " + age);
} // introduce() 종료 시 message 제거
}
'JAVA' 카테고리의 다른 글
| JAVA_조건문 (0) | 2026.05.21 |
|---|---|
| JAVA_레퍼클래스 (0) | 2026.05.20 |
| JAVA_클래스와 객체 (0) | 2026.05.19 |
| JAVA_메서드 (0) | 2026.05.14 |
| JAVA_배열 (0) | 2026.05.13 |