728x90
아예 모르는 내용은 아니지만, JAVA에 대해 다시 공부하면서 정확하고 더욱 오래 기억하고자 기록하게 됐다.
🔍 자바의 메모리 구조
- 메서드 영역(Method Area): 프로그램을 실행하는데 필요한 공통 데이터(클래스 정보, static 영역, 런타임 상수 풀)를 관리한다. 해당 영역은 프로그램의 모든 영역에서 공유한다.
- 클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재
- static 영역: static 변수들을 보관한다.
- 런타임 상수 풀: 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다.
- 스택 영역(Stack Area): 자바 실행 시, 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역 변수, 파라미터, 중간 연산 결과, 메서드 호출 정보 등을 포함한다.
- 스택 프레임: 메서드를 호출할 때마다 하나의 스택 프레임이 쌓이고, 메서드가 종료되면 해당 스택 프레임이 제거된다.
- 힙 영역(Heap Area): 객체(인스턴스)와 배열이 생성되는 영역이다. 가비지 컬렉션(GC)이 이뤄지는 주요 영역이며, 더 이상 참조되지 않는 객체는 GC에 의해 제거된다.
- new 키워드로 생성된 객체와 배열이 생성되는 영역
- PC Register: 현재 쓰레드가 실행하고 있는 코드의 주소값을 가지고 있는 영역이다.
- Native Method Stack: 자바 이외의 언어로 작성된 코드가 실행되기 위해 필요한 스택 영역이다.
- JNI을 통해 다른 언어로 작성된 메서드가 실행되는 경우, 해당 메서드의 스택 프레임이 Stack Area가 아닌 Native Method Stack 영역에 쌓이게 된다.
▶️ 모든 쓰레드에서 공유해서 사용하는 영역
- 메서드 영역(Method Area)
- 메서드 영역의 경우에는 같은 클래스로부터 생성된 객체라도, 인스턴스 내부의 변수 값은 서로 다를 수 있지만, 메서드는 공통된 코드를 공유한다. 따라서 메서드는 메서드 영역에서 공통으로 관리되고 실행된다.
- 힙 영역(Heap Area)
▶️ 쓰레드 마다 하나씩 생성하는 영역
- 스택 영역(Stack Area)
- PC Register
- Native Method Stack
728x90
'Java' 카테고리의 다른 글
[JAVA] 추상 클래스와 인터페이스에 대해 알아보자 (0) | 2024.07.07 |
---|---|
[JAVA] main() 메서드는 정적 메서드이다! (0) | 2024.07.05 |
[JAVA] 자바에서 SWAP 구현하기! (1) | 2024.07.03 |
[JAVA] 자바 컴파일과 실행 과정에 대해 알아보자 (0) | 2024.07.02 |
[JAVA] compareTo()에 대해 알아보자(문자열, 숫자 비교) (1) | 2024.04.18 |