자바의 기본기를 다지기 위한 스터디를 진행하던 도중 "이것이 자바다"라는 책을 읽고 Runtime Data Area에 대해 정리해보았습니다.

Java는 멀티 스레드 환경으로 모든 스레드는
Heap,Method Area를 공유합니다.
이 영역은 5가지 세부 영역으로 나눠집니다.
JVM은 스택 기반의 가상머신으로, CPU에 접근하지 않고 Stack에서 주소를 뽑아서 가져오고 이를 PC Register 에 저장
현재 어떤 명령을 실행해야 할 지에 대한 기록을 담당
호출된 메서드의 파라미터, 지역 변수, 리턴 값 및 연산 값 등이 저장되는 영역
프로그램 실행 시 임시로 할당되었다가 메서드를 빠져나가게 되면 소멸되는 특성의 데이터들이 저장되는 영역
메서드 호출 시마다 스택에 각각의 스택 프레임이 생성되고, 수행이 끝나면 스택 포인트에서 해당 프레임을 제거
Java 이외의 언어에 제공되는 Method의 정보가 저장되는 공간
Java Native Interface를 통해 바이트 코드로 저장
Kernel이 자체적으로 Stack을 잡아 독자적으로 프로그램을 실행시키는 영역
Garbage Collector의 대상이 되는 영역
객체를 동적으로 생성하게 되면 인스턴스가 Heap 영역의 메모리에 할당
단, 레퍼런스 변수의 경우, Heap에 인스턴스가 저장되는 것이 아닌 포인터가 저장됨
클래스 정보를 처음 메모리에 올릴 때 초기화되는 대상을 저장하기 위한 영역