728x90
자바 메모리 구조
자바 메모리 구조 쉬운 버전
- 메서드 영역: 클래스 정보를 보관한다.
- 스택 영역: 실제 프로그램이 실행되는 영역이다. 메서드를 실행할 때마다 하나씩 쌓인다.
- 힙 영역: 객체(인스턴스)가 생성되는 영역이다. new 영역을 사용하면 이 영역을 사용한다. 배열도 이 영역에 생성된다.
자바 메모리 구조 실제 버전
- 메서드 영역: 프로그램을 실행하는 데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.
- 클래스 정보: 클래스의 실행 코드, 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재한다.
- 인스턴스의 메서드는 힙 영역에 저장되는 것이 아니라 여기에 저장된다.
- static 정보: static 변수들을 보관한다.
- 런타임 상수 풀: 프로그램 실행에 필요한 공통 리터럴 상수를 보관한다.
- 클래스 정보: 클래스의 실행 코드, 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재한다.
- 스택 영역: 자바 실행 시 하나의 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함한다.
- 스택 프레임: 스택 영역에 쌓이는 네모 박스 하나가 스택 프레임이다. 메서드를 호출할 때마다 하나의 스택 프레임이 쌓이고 메서드가 종료되면 해당 스택 프레임이 제거된다.
- 힙 영역: 객체(인스턴스)와 배열이 생성되는 영역이다. 더 이상 참조되지 않는 객체는 가비지 컬렉터에 의해 제거된다.
참고 메모리 구조
스택 영역과 큐 자료구조
스택: LIFO 후입 선출 구조
- 자바는 스택 영역을 이용해서 메서드 호출과 지역 변수를 관리한다.
- 메서드를 계속 호출하면 스택 프레임이 계속 쌓인다
- 스택 프레임이 종료되면 지역 변수도 함께 제거된다.
- 스택 프레임이 모두 종료되면 프로그램이 종료된다.
큐: FIFO 선입 선출 구조
static
- 특정 클래스에서 공용으로 함께 사용할 수 있는 변수를 만들 때 사용
- static 변수 = 정적 변수 = 클래스 변수
- static이 붙은 멤버 변수는 인스턴스가 저장되는 힙 영역이 아니라 메서드 영역의 static 영역에 저장됨
728x90
'프로그래밍 > Java' 카테고리의 다른 글
[실전 자바-기본편] 상속 (0) | 2024.02.15 |
---|---|
[실전 자바-기본편] final (0) | 2024.02.14 |
[실전 자바-기본편] static 계속해서 (0) | 2024.02.13 |
[실전 자바-기본편] 접근 제어자 (0) | 2024.02.11 |
[실전 자바-기본편] 패키지 (0) | 2024.02.09 |
댓글