[Java] JVM 메모리 영역

서연·2025년 4월 23일

Java

목록 보기
15/36

JVM 메모리 구조

  • Method Area
    • 프로그램 시작 시 정보가 저장된다.
    • 클래스 정보(.class 파일)가 올라가는 곳이다.
    • 클래스의 메서드 정보, static 변수 등이 저장된다.
    • 모든 객체가 공유하는 공용 공간
  • Stack Area
    • 먼저 들어온 것이 가장 늦게 나가는 선입후출(LIFO)구조이다.
    • 메서드가 호출될 때마다 새로운 스택프레임이 쌓인다.
    • 가장 최근에 호출된 메서드가 먼저 실행되며 메서드 실행이 끝나면 스택에서 제거된다.
  • Heap Area
    • new키워드로 생성된 객체가 저장되는 곳이다.
    • 객체의 실제 데이터가 저장되고 데이터의 주소는 stack 영역에 저장된다.

Method(static) 영역 이해하기

  • 프로그램이 실행되면 작성했던 모든 파일(.java)의 데이터가 Method영역에 저장된다.
  • 프로그램 실행 시점에 한번만 저장된다.
  • Method 영역에 저장된 데이터는 프로그램 전체에서 공용으로 활용이 가능하다.
  • static 으로 선언된 변수와 메서드들이 이 공간이 위치하게 된다.

Heap 영역 이해하기

  • new 키워드로 생성된 객체는 Heap 영역에 저장된다.

    객체를 담은 변수에는 실제 객체의 Heap 메모리 주소 값이 저장되는 것을 알 수 있다.

    가비지 컬렉터(Garbage Collector)

    - Java의 사용하지 않는 객체를 자동으로 제거하는 기능
    - 사용이 끝난 객체는 메모리에 남아 있으면 낭비이기 때문에 가비지 컬랙터가 불필요한 객체를 자동으로 정리해서 메모리를 확보한다.

Stack 영역 이해하기

  • 메서드가 호출될 때마다 Stack 영역에 메모리가 할당된다.
  • 스택프레임에 각 메서드의 지역변수가 저장된다.
  • 이 영역은 접시를 쌓듯이 LIFO-후입선출 구조이다.
  • 메서드가 시작되면 추가되고 메서드가 종료되면 사라지는 구조이다.
  • 특정 메서드가 실행되면 해당 메서드의 정보와 변수가 Stack 에 저장되고 메서드 실행이 끝나면 그 메모리는 자동으로 제거된다.
  • 메서드 내에 선언된 지역변수들이 저장되는 공간이다.
    → 변수에 객체가 담기면 객체의 주소값이 저장됩니다.

0개의 댓글