Java - JVM의 메모리 구조

method area, call stack, heap

Posted by Yan on March 21, 2021

JVM의 메모리 구조

1. 메소드 영역 method area

  • 프로그램 실행 중 어떤 클래스가 사용됨 -> JVM은 해당 클래스의 클래스 파일을 읽어서 분석 -> 클래스에 대한 정보 (클래스 데이터)를 메소드 영역에 저장
  • 클래스의 클래스 변수도 이 영역에 함께 생성됨

2. 힙 heap

  • 인스턴스가 생성되는 공간
  • 프로그램 실행 중 생성되는 인스턴스는 모두 힙에 생성됨.
  • 인스턴스 변수들이 생성되는 곳

3. 호출 스택 call stack

  • 메소드 작업에 필요한 메모리 공간 제공
  • 메소드 호출 -> 호출스택에 호출된 메소드를 위한 메모리 할당됨 -> 메모리는 작업을 수행하는 동안 지역변수들과 연산의 중간결과 등을 저장하는데 사용됨 -> 메소드가 작업을 마치면 할당되었던 메모리 공간이 반환되어 비어짐.

작동 방식

첫번째로 호출을 위한 메소드를 위한 작업공간이 호출공간의 맨 밑에 할당됨

-> 첫번째 메소드 수행 중 다른 메소드 호출

-> 첫번째 메소드 바로 위에 두번째 메소드를 위한 공간 할당됨

-> 첫번째 메소드는 수행을 멈추고 두번째 메소드 수행되기 시작

-> 두번째 메소드 수행 완료

-> 두번째 메소드를 위해 제공되었던 호출 스택의 메모리 공간 제거됨

-> 첫번째 메소드 수행 완료

-> 호출스택이 완전히 비워지게 됨