자바 메모리 구조
- 메서드 영역(Method Area)
- 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다.
- 프로그램의 모든 영역에서 공유한다.
- 클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드등 모든 실행 코드가 존재한다.
- static 영역: static 변수들을 보관한다.
- 런타임 상수 풀: 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다.
- 스택 영역(Stack Area):
- 자바 실행 시, 하나의 실행 스택이 생성된다.
- 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함한다.
* 스택 프레임: 스택 영역에 쌓이는 네모 박스가 하나의 스택 프레임이다. - 메서드를 호출할 때 마다 하나의 스택 프레임이 쌓이고, 메서드가 종료되면 해당 스택 프레임이 제거된다.
- 힙 영역(Heap Area)
- 객체(인스턴스)와 배열이 생성되는 영역이다.
- 가비지 컬렉션(GC)이 이루어지는 주요 영역이며, 더 이상 참조되지 않는 객체는 GC에 의해 제거된다.
- 메서드 코드는 메서드 영역에...
- 자바에서 특정 클래스로 100개의 인스턴스를 생성하면, 힙 메모리에 100개의 인스턴스가 생긴다.
- 각각의 인스턴스는 내부에 변수와 메서드를 가진다.
- 같은 클래스로 부터 생성된 객체
내부의 변수 값: 다를 수 있음,
메서드: 공통된 코드를 공유 - 인스턴스 변수: 메모리가 할당
메서드: 메모리 할당(X). - 메서드는 메서드 영역에서 공통으로 관리되고 실행된다.
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] While (0) | 2024.03.30 |
---|---|
[Java] Array (0) | 2024.03.30 |
[Java] static (0) | 2024.03.30 |
[Java] package 규칙 (+명명 규칙) (0) | 2024.03.30 |
[Java] this 활용 추세 (0) | 2024.03.30 |