메모리 영역(Runtime Data Area)
1. 메소드(Method) 영역
- 코드에서 사용되는 클래스(~.class)들을 클래스 로더로 읽어 클래스별로 런타임 상수풀(runtime constant pool), 필드(field) 데이터, 메소드(method)데이터, 메소드 코드, 생성자(constructor)코드 등을 분류해서 저장
- JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역
2. 힙(Heap) 영역
- 객체와 배열이 생성되는 영역
(객체 & 배열 : JVM 스택 영역의 변수나 다른 객체의 필드에서 참조)
- JVM은 Garbage Collector를 실행시켜 (참조하는 변수나 필드가 없는 의미 없는 객체를 쓰레기로 취급함)쓰레기 객체를 힙 영역에서 자동으로 제거
3. JVM 스택(Stack) 영역
- 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당됨
- 메소드가 호출할 때마다 프레임(Frame)을 추가(push)하고 메소드가 종료되면 해당 프레임을 제거(pop)함
- 프레임 내부에는 로컬 변수 스택이 있는데, 기본타입변수나 참조 타입 변수가 push/pop됨
'Programming Language > Java' 카테고리의 다른 글
[JAVA] 어떤 숫자를 자릿수별로 배열에 저장하는 방법 (0) | 2020.08.07 |
---|---|
[JAVA] Airline Booking Engine (0) | 2020.07.12 |
[JAVA] 데이터타입 - 참조 타입 (0) | 2020.06.04 |
[JAVA] break문 사용 (0) | 2020.06.01 |
[JAVA] 키보드로부터 입력받기 (0) | 2020.06.01 |