과제 제출 - JVM 메모리 기본 구조 학습

잠자는 고양이·2025년 5월 27일
0

Java

목록 보기
71/73

과제 제출 - JVM 메모리 기본 구조 학습

JVM Memory 구조

  1. 선형 메모리 구조 (Linear Memory Structure)

주로 Java 8 이하 버전에서 사용되는 전통적인 구조, 전체 메모리가 크게 Heap 영역과 Non-Heap 영역으로 나뉘며, Heap은 다시 Young / Old 세대로 나뉘게 된다.

  • Heap 영역
    **Young Generation (영 세대)

    • Eden: 객체가 처음 생성되는 공간입니다. 대부분의 객체는 여기서 생성되며, 오래 유지되지 않으면 곧 GC 대상이 된다.
    • Survivor: Eden에서 살아남은 객체들이 이동하는 곳. 보통 두 개의 Survivor 공간이 번갈아 사용.
  • Old Generation (노후 세대)

    • Young 영역을 여러 번 거쳐 살아남은 객체들이 이 영역으로 이동.
    • 오래된 객체들이 많아 GC 비용이 크고, Full GC가 발생하면 성능에 큰 영향을 줄 수 있다

Non-Heap 영역

  • 메타데이터, 클래스 정보, 메서드 정의, 상수 풀 등이 저장되는 공간이다.
  • Java 8 이전에는 PermGen이라고 불렸고, 이후에는 Metaspace로 대체되었다.
  • 2 리전 기반 메모리 구조 (Region-Based Memory Structure, G1 GC)

Java 9 이상부터는 G1 GC가 기본으로 설정되어 있고, Region이라는 개념으로 메모리를 관리한다. 이 구조는 전체 힙을 동일한 크기의 Region으로 나누는 방식이다.

특징

  • 각 Region은 다음 중 하나의 역할을 한다:

    • Young Region: Eden과 Survivor의 역할을 나눠 담당.
    • Old Region: 일정 시간 이상 살아남은 객체들이 이곳에 저장.
    • Humongous Region: 아주 큰 객체는 여러 Region을 묶어서 저장.
  • G1 GC는 전체 메모리를 한 번에 수집하지 않고, 필요한 Region만 선별해서 수집.
    → 덕분에 GC pause time이 짧고 예측 가능하게 된다.

profile
개발자가 되고 싶은 잠자는고양이

0개의 댓글