자바 메모리 구조
메모리 구조에 대해서 왜 알고 있어야 할까?
형식적인 이유로는 성능 최적화, 디버깅 및 문제해결, 자원 관리 등 여러 이유가 있을 수 있지만 내가 생각하는 메모리 구조에 대해 알고 있어야 하는 이유는 앞으로 공부하게 될 static 과 final 그리고 다형성을 제대로 이해하기 위해서는 메모리 구조를 정확하게 이해하고 있어야 가능하다고 생각한다. 따라서, 앞으로 나아가기 위한 계단을 걷기위한 단계이기 때문에 꼭 이해하고 넘어가야 한다.
자바 메모리 구조
자바 메모리 구조는 3개의 영역으로 나눌 수 있다.
메서드 영역
메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.

스택 영역
자바 실행 시, 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함한다.

스택 프레임 : 스택 영역에 쌓이는 네모 박스가 하나의 스택 프레임이다. 메서드를 호출할 때 마다 하나의 스택 프레임이 쌓이고, 메서드가 종료되면 스택 프레임이 제거된다.
위에서 자바 실행 시, 하나의 실행 스택이 생성된다고 하였는데 이는 메인 스레드가 하나 생성된 것과 같은 의미이다. 다시 말해, 스레드가 한개 추가 될 때마다 하나의 스택 영역에 추가로 생성 된다.
이 후, 스레드에 대해 학습할 때 더욱 자세히 설명할 예정이다.
힙 영역
객체(인스턴스)와 배열이 생성되는 영역이다. 가비지 컬렉션(GC)이 이루어지는 주요 영역이며, 더 이상 참조되지 않는 객체는 GC에 의해 제거된다.

각 영역에서의 변수 위치
마지막으로 변수 종류를 알아보고 어떤 영역에 올라가는지 보면서 이해를 해보겠다.
