✶Language/Java
[JAVA] 자바 메모리 구조
soonybutter
2024. 8. 28. 00:04
728x90

자바 메모리 구조
자바의 메모리 구조는 메서드 영역, 스택 영역, 힙 영역 으로 나눌 수 있다.
자바에서 어떤 동작을 하냐에 따라 각각의 메모리가 저장하는 요소가 다른데, 간단히 정리해보자!
- 메서드 영역(Method Area)
- 클래스 정보를 저장한다. (클래스가 실행되는 코드, 필드등 모든 코드가 존재함.)
- static 변수들을 보관한다.
- 스택 영역(Stack Area)
- 자바를 실행하면, 하나의 실행 스택이 생성된다.
- 스택프레임: 지역변수, 중간 연산결과, 메서드 호출결과등을 포함한다.
- 메서드를 호출할때마다 하나의 스택 프레임이 스택에 쌓이고, 메서드가 종료되면 해당 스택 프레임이 사라진다.
- 힙 영역(Heap Area)
- 객체(인스턴스), 배열이 생성되는 영역이다.
- 더이상 참조되지 않는 객체는 자바의 GC(Garbage Collection)에 의해 제거된다.
만약, 자바에서 5개의 인스턴스를 생성하면
힙 메모리에 5개의 인스턴스가 생성된다. 각각의 인스턴스는 내부에 변수와 메서드를 가진다.
인스턴스 내부의 변수의 값들은 서로 다를 수 있다. 하지만 메서드는 공통된 코드를 공유한다.
인스턴스 변수에는 메모리가 할당되고, 메서드에 대한 새로운 메모리 할당은 없기때문이다.
메서드는 오로지 메서드 영역에서만 공통으로 관리된다.
*출처: 김영한 자바
728x90