

📒 Method Area
JVM이 시작될 때 생성되는 공간, 바이트 코드를 처음 메모리 공간에 올릴 때 초기화 되는 대상을 저장
📒 Heap Area
런타임시 동적으로 할당하여 사용하는 영역
new 연산자로 생성되는 클래스, 인스턴스 변수, 배열
-> Regerence Type이 저장되는 곳
힙 공간은 가비지 컬렉션의 대상이 되는 공간이므로 내부가 세부적으로 5가지로 나뉜다.

📒 Stack Area
임시적으로 사용되는 변수나 정보들이 저장되는 영역
📒 PC Registers
현재 수행중인 JVM 명령어 주소를 저장하는 공간
📒 Native Method Stack
기계어로 작성된 프로그램을 실행 시키는 영역
일반적으로 실행하는 경우 : Stack에 쌓임
네이티브 방식(JIT 컴파일러) : Native Method에 쌓임
❓Garbage 란?
Garbage : 정리되지 않는 메모리, 유효하지 않는 메모리 주소(ex) 참조하는 레퍼런스가 하나도 없는 객체나 배열)
=> 주소를 잃어버린 메모리, 앞으로 사용하지 않고 메모리를 가지고 있는 객체
❓Garbage Collector 이란?
Java는 Garbage Collector가 메모리 관리를 대신 해주기 때문에 메모리 관리, 메모리 누수 문제에 대해 관리를 하지 않아도 됨
Garbage Collector는 메모리가 부족할 때 Garbage들을 메모리를 해제시켜 메모리를 사용할 수 있도록 해줌
Heap 메모리 영역에 생성 된 객체들 중 Garbage를 찾아 내어 메모리 회수
❓ Garbage Collector의 단점은?
❓ Stop-The-World란?
GC를 수행하기 위해 JVM이 프로그램 실행을 멈추는 현상
GC 관련 Thread를 제외한 모든 Thread는 멈추게 됨