[Java] JVM 메모리 구조(JVM Memory Structure)

u_yonu·2026년 1월 27일

Java

목록 보기
7/18
post-thumbnail

이전에 잠깐 다뤘던 JVM 메모리에 대한 구조를 조금더 알아보자!
파이팅!!


JVM 메모리 구조

JVM(Java Virtual Machine)

: 자바는 어떠한 운영체제에서도 돌아가게 하기 위한 자바 프로그램이 실행되는 환경으로 메모리 체계적으로 관리하기 위해 여러 영역으로 나뉘어져 있음

메모리 영역의 주요 종류

1. 메서드 영역(Method Area)

  • 클래스 정보를 저장하는 영역
  • 정적 변수, 상수, 메서드 등이 저장됨
  • 일부 JVM에 따라 GC가 관리해주는 경우도 있음
  • 모든 스레드가 공유
  • 클래스 로더(Class Loader)에 의해 클래스가 로드될 때 저장되는 공간

2. 힙 영역(Heap Area)

  • 객체 인스턴스를 저장하는 공간
  • GC가 관리하는 영역(사용되지 않는 객체를 자동으로 삭제)
  • 인스턴스 변수, 배열 등이 해당 영역에 저장
  • 어플리케이션이 사용할 수 있는 가장 큰 메모리
  • 모든 스레드가 공유

3. 스택 영역(Stack Area)

  • 지역 변수, 메서드 호출 시 사용되는 값, 연산 결과 등 저장
  • 메서드 호출 시 스택 프레임이 생성되며, 끝나면 프레임 제거
  • 스레드 마다 생성

4. PC 레지스터(PC Register)

  • 현재 실행 중인 메모리의 주소를 저장하는 영역
  • 프로그램 실행 흐름을 제어하는 데 사용
  • 스레드 마다 생성

5. 네이티브 메서드 스택(Native Method Stack)
: 네이티브 언어(C, C++ 등)로 작성된 메서드 호출 시 사용되는 메모리 영역

cf) GC(Garbage Collection) : JVM은 가비지 컬렉터를 통해 자동으로 메모리를 관리, 사용되지 않는 객체를 메모리에서 해제

profile
비전공자의 개발도전기

0개의 댓글