티스토리 뷰

언어/Java

JVM 메모리 구조 정리

snvlqkq 2025. 8. 16. 21:18

JVM은 프로그램 실행 시 여러 종류의 메모리 영역을 사용하며, 각 영역은 역할과 저장하는 데이터가 다르다. JVM 메모리 구조에 대해 기억이 나지 않아 다시 한번 정리해봤다.

1. Heap


Heap은 애플리케이션에서 생성되는 모든 객체의 인스턴스가 저장되는 공간이다.
GC의 대상이 되며 다음과 같이 구분된다.

    • Young Generation
      • Eden: 새로 생성된 객체가 먼저 저장되는 공간
      • Survivor: Minor GC 후 살아남은 객체가 임시로 저장되는 공간이다. Survivor에서 일정 횟수 이상(보통 15회) Minor GC를 버틴 객체는 Old Generation으로 이동한다.
    • Old Generation
      • Young Generation에서 오래 살아남은 객체가 저장되는 공간
      • Major GC의 대상이 되며, Major GC가 발생할 때 Young Generation도 함께 GC되는 것을 Full GC라고 부릅니다. Full GC는 Metaspace까지 포함될 수 있으며, Minor GC보다 훨씬 오래 걸린다.
Minor GC : Young Generation 대상으로 하는 GC
Major GC : Old Generation 대상으로 하는 GC
Full GC : Young + Old Generation + Metaspace 대상으로 하는 GC

2. Stack


스택은 스레드마다 독립적으로 생성되는 메모리 영역이다. 메서드가 호출될 때마다 스택 프레임(Stack Frame)이 생성되어 해당 스레드의 스택에 쌓이게 된다.

    • 스택 프레임 구성 요소
      • 로컬 변수
      • 매개 변수
      • 메서드 호출/리턴 주소
      • 중간 연산 값
중요: 스택 프레임에는 객체에 대한 참조 변수가 저장될 뿐, 객체 인스턴스 자체는 힙에 저장됩니다.

 

코드 예시

public void mainMethod() {
    methodA(5);
}

public void methodA(int x) {
    methodB(x * 2);
}

public void methodB(int y) {
    System.out.println(y);
}

위 코드를 실행하면 mainMethod -> method A -> method B 순서대로 스택에 쌓이게 된다. 각 스택 프레임은 해당 메서드를 호출한 위치를 저장하고 있으며 메서드 종료시 호출한 지점으로 돌아가게 된다.

  • mainMethod 프레임 생성
  • methodA 호출 시 methodA 프레임 push
  • methodB 호출 시 methodB 프레임 push
  • methodB 종료 시 pop → methodA로 복귀
  • methodA 종료 시 pop → mainMethod로 복귀

3. Method Area


Method Area는 클래스 로딩 시 클래스에 대한 메타 데이터를 저장하는 공간이다. Method Area는 JVM 명세에 정의된 설계적인 의미이고 실제 Method Area를 구현한 구체 메모리 공간이 Metaspace이다. Java 8 이전에는 PermGen(Permanent Generation)이라고 했으며, 이때는 Heap의 일부 영역이었으나 JDK 8 부터 Metaspace로 변경된 이후 Native Memory(OS의 메모리)를 사용한다.

  • 저장 정보
    • 클래스 정보(필드, 메서드, 접근제어자)
    • 상수
    • 정적 변수(static 변수)
  • GC의 대상이 될 수 있으며, 사용하지 않는 클래스 정보는 제거된다.

 

참고 : GC 시뮬레이터

https://wdebowicz87.github.io/garbage-collector-game/public/index.html

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함