JVM memory structure
Last updated
Was this helpful?
Last updated
Was this helpful?
크게 힙 영역과 네이티브 영역으로 나뉨
힙 영역에는 객체등이 저장된다. GC가 관리하며 GC를 위해 세대가 나누어져 있다. OS가 관리하는 네이티브 영역에는 메타스페이스, 코드 캐시, 스레드 스택등이 올라간다.
보통은 Generational GC를 위해 크게 Young과 Tenured(Old) 로 나뉨. JDK 버전 7까지는 힙 내부에 Perm 영역이 있었지만 OOM 이슈가 발생하기 쉬운 문제 등으로 OS가 관리하는 네이티브 메모리 영역의 Metaspace로 옮겨졌다 자세한 건 을 참고하자.
GC와 관련된 내용은 를 참고하자
마이너 GC를 수행하는 영역
Eden과 Eden을 정리할때 살아남은 객체들이 들어있는 Survivor 0/1 로 나뉜다.
Major GC를 수행하는 영역
Young에서 넘어온다.
CMS(Concurrent Mark-Swep) Collector, Parreral Collector, Serial Collector 등을 사용하면 메모리 영역이 Eden, Survivor 0/1, Old 등으로 딱딱 나뉘지만 G1 Collector를 사용할 경우에는 전체 메모리를 Region으로 나눈 후 각 리전에 역할을 부여하는 방식이기 때문에 경계가 명확하지 않다.