Method Area
, Heap Area
, Stack Area
영역을 다룬다.클래스와 인터페이스 구조, static 변수 및 메서드 등을 저장하는 메모리 영역 (Static Area라고도 불림)
모든 Thread가 자원을 공유함, JVM 당 1개 존재
JVM 구동 시작부터 종료까지 유지됨
인스턴스를 생성(new)할 때 동적으로 할당되는 메모리 영역
모든 Thread가 자원을 공유함, JVM 당 1개 존재
참조형 데이터 객체의 실제 데이터가 저장됨
Method Area에 로드된 클래스만 생성이 가능함
더 알아볼 것
- Garbage Collector
메서드가 호출 시 지역변수가 저장되는 메모리 영역
각 Thread가 하나의 Stack 영역을 할당 받음
Heap Area에 할당된 객체의 주솟값이 저장됨
메서드 동작이 완료되면 Area에서 소멸됨
호출된 시점부터 데이터를 메모리에 할당하여 프로그램 종료 시까지 데이터를 메모리에 유지하게 하는 키워드
특징
1) 객체 간 값을 공유하고 싶을 때 사용
2) 인스턴스를 생성하지 않고 클래스의 필드와 메서드에 접근할 수 있음
-> static은 클래스 호출 시 Method Area에 데이터가 할당되기 때문에 인스턴스를 생성하지 않아도 접근이 가능해집니다.
-> non-static의 경우, 객체 내 필드나 메서드에 접근하기 위해서는 객체가 생성된 상태여야 합니다.
그 이유는 객체를 생성해야지 Heap Area에 인스턴스가 할당될 것이고, 접근 가능한 상태가 되기 때문입니다.
장점: 속도가 빠름 - 객체를 생성하지 않고 메모리에 할당된 값을 바로 사용하기 때문에
단점: 메모리 낭비 - static 키워드를 과용할 경우
참고
- Mana Takahashi, 『그림으로 배우는 Java Programming Basic』, 영진닷컴(2023), p.315~324
- https://steady-coding.tistory.com/305
- https://ict-nroo.tistory.com/19