Language | Basic/Java

JVM의 Heap Area

주정용 2021. 5. 28. 21:14
728x90

개요

  • JVM의 Runtime Data Areas에서 Heap은 객체를 저장합니다.
  • 객체에 대한 참조 변수는 Stack에 있습니다.

Oracle의 Hotspot VM의 Heap 구조

  • Young Generation
    • Eden
      • 객체가 최초로 할당되는 장소
      • Eden이 포화상태이면 참조중인 모든 객체를 Survior로 옮깁니다.
      • Survivor로 참조중인 객체가 모두 옮겨지면 Garbage Collection(Minor GC) 수행합니다.
    • Survivor
      • Survivor 1, Survivor 2로 이뤄져 있습니다.
      • 참조중인 객체들은 하나의 Survivor 영역만 사용합니다.
  • Old Generation
    • Survivor 에서 오랫동안 참조되고 있는 객체는 Tenured로 이동합니다.
    • Tenured에 온 객체는 앞으로도 오랫동안 참조될 가능성이 높기 때문에 메모리 상에서 계속 머무릅니다.
    • Tenured 의 메모리가 포화상태에 이르면 참조하고 있지 않는 객체에 대한 Garbage Collection(Major GC == Full GC)이 이뤄집니다.
  • Metaspace

'Language | Basic > Java' 카테고리의 다른 글

Java의 스레드(Thread) 알아보기  (0) 2021.06.02
Java의 Garbage Collection  (0) 2021.05.28
JVM(Java Virtual Machine)이란  (0) 2021.05.28
Lambda와 함수형 인터페이스  (0) 2021.05.18
Stream API  (0) 2021.05.10