Java

JAVA 기초 정리 - JVM 메모리 영역

chungmani 2026. 5. 20. 17:52

 

1. JVM 메모리 구조

JVM 메모리 구조는 크게 3가지 영역으로 나뉜다.

  • Method Area
  • Stack Area
  • Heap Area

각 영역은 서로 다른 역할을 담당한다.


1) Method Area

Method Area는:

"자바 파일들의 정보가 저장되는 공간"

이라고 이해할 수 있다.

 

쉽게 비유하면:

책들이 꽂혀 있는 책장

같은 느낌이다.

 

이 영역에는:

  • 클래스 정보
  • 메서드 정보
  • static 데이터

등이 저장된다.

 

즉, 작성한 자바 파일들의 정보가 JVM 안에 올라가는 공간이라고 볼 수 있다.


2) Stack Area

Stack Area는 메서드 실행 정보를 저장하는 공간이다.

 

쉽게 말하면:

"실행 중인 작업들이 순서대로 쌓이는 공간"

이다.

 

비유하자면:

접시를 차곡차곡 쌓아두는 구조

와 비슷하다.

Stack 특징

메서드가 실행되면 Stack에 쌓인다.

main()
 └─ sum()
     └─ print()

이런 느낌으로 실행 순서대로 쌓인다.

 

그리고 메서드 실행이 끝나면:

가장 위에 있는 것부터 제거된다.

 

즉:

  • 먼저 들어온 것이 나중에 빠지는 구조
  • 후입선출(LIFO)

방식이라고 이해할 수 있다.


3) Heap Area

Heap Area는 객체(Object)가 저장되는 공간이다.

Heap 특징

new 키워드로 생성한 객체들이 Heap 영역에 저장된다.

예시:

Person person = new Person();

여기서 생성된 Person 객체는 Heap 영역에 저장된다.

 

쉽게 비유하면:

부풀어 오르는 풍선

같은 느낌이다.

 

객체마다 크기가 다르기 때문에 Heap 영역도 상황에 따라 계속 사용된다.


JVM 메모리 흐름 이해하기

정리하면:

Method Area

→ 클래스 정보 저장

Stack Area

→ 메서드 실행 흐름 저장

Heap Area

→ 객체 저장

이라는 역할을 가진다.


코드 흐름 관점에서 보기

자바 프로그램이 실행되면:

  1. 클래스 정보가 Method Area에 올라간다
  2. main 메서드가 Stack Area에 쌓인다
  3. new로 생성된 객체는 Heap Area에 저장된다
  4. 메서드 실행이 끝나면 Stack에서 제거된다

이런 흐름으로 동작한다고 이해할 수 있다.


Frames 와 Object

자바 실행 시각화 자료를 보면:

  • Frames → Stack 영역
  • Object → Heap 영역

으로 표현되는 경우가 많다.


Java 코드 실행 시각화 도구

자바 메모리 흐름은 눈으로 보면 이해가 훨씬 잘 되는 것 같다.

특히 아래 사이트가 유명하다고 한다.

 

👉 Java Visualizer

코드를 실행하면:

  • Stack
  • Heap
  • 객체 생성 흐름

등을 시각적으로 볼 수 있다.


가비지 컬렉터(Garbage Collector)

자바에는 사용하지 않는 객체를 자동으로 정리해주는 기능도 존재한다.

 

이를:

Garbage Collector (GC)

라고 부른다.

 

예를 들어 더 이상 사용하지 않는 객체가 있으면:

  • 자동으로 제거하고
  • 메모리를 정리해준다.

덕분에 메모리 낭비를 줄일 수 있다.


오늘 배운 점

처음에는 JVM 메모리 구조가 굉장히 어렵게 느껴졌는데,
각 영역을 역할별 공간이라고 생각하니까 조금 이해되기 시작했다.

특히:

  • Method Area → 클래스 정보
  • Stack Area → 실행 흐름
  • Heap Area → 객체 저장

이라는 흐름이 중요하다는 걸 알게 되었다 😊