JVM이 클래스, 인터페이스, 메서드, 변수 등의 정보를 저장하는 메모리 영역입니다.
클래스 로더에 의해 로딩되며, 모든 JVM 인스턴스에서 공유됩니다.
객체가 생성되는 영역으로, 동적으로 할당되며 GC(Garbage Collector)의 대상이 됩니다.
다수의 스레드에서 공유될 수 있습니다.
메서드 호출 시, 지역 변수와 매개변수, 리턴 값 등의 정보가 저장되는 영역입니다.
메서드가 실행되는 동안만 유효하며, 메서드 종료 시 해제되어 사라집니다.
메서드 호출 시마다 새로운 스택 프레임이 생성됩니다.
라스트인 라스트 아웃의 형태로 되어있다.
현재 실행 중인 JVM 명령어의 주소를 저장하는 레지스터입니다.
자바 코드가 아닌, C, C++ 등의 네이티브 언어로 작성된 코드를 실행할 때 사용되는 스택 영역입니다.
CPU가 직접 사용하는 메모리로, 명령어 실행에 필요한 데이터가 저장됩니다.
클래스 파일 내부의 상수들이 저장되는 영역입니다.
final 키워드로 선언된 상수 값들도 이 영역에 저장됩니다.
객체 직렬화를 통해 저장된 객체들이 저장되는 영역입니다.
자바 애플리케이션의 상태를 유지하는 데 사용됩니다.