프로그램 실행 시 OS로부터 할당받는 메모리로 JVM 내 위치
Class Loader가 적재한 클래스에 대한 메타 정보 저장
이 영역 내 값은 JVM이 시작되면 할당되어 프로그램 종료나 명시적 null 선언 시 해제된다
런타임 시 동적으로 할당해 사용하는 영역(by new 연산자)
여기 저장된 데이터를 다른 곳에서 참조해 사용한다
만약 not reachable이면 GC 대상이 된다!
이 영역 내 값은 객체 생성 시 할당되고 not reachable이거나 명시적 null 선언 시 해제된다
Thread의 Method가 호출될 때 수행정보를 저장하는 영역
수행정보?
if primitive type -> 여기에 저장
else -> 여기엔 reference만, 실제 인스턴스는 Heap 또는 Method에 저장
현재 수행중인 JVM 명령주소 저장 영역
Java 외 언어로 작성된 네이티브 코드를 위한 Stack
따라서, 실행중인 프로그램 내 여러 스레드가 존재한다면 다음과 같은 메모리 구조를 갖게된다
https://stackoverflow.com/questions/8387989/where-are-static-methods-and-static-variables-stored-in-java