JVM의 스택과 힙 메모리 영역

song yuheon·2023년 10월 13일
0

CS Study

목록 보기
13/50
post-thumbnail
post-custom-banner

JVM의 메모리 구조는 크게 여러 영역으로 나눌 수 있다.
그 중에서 스택과 힙은 주요한 두 메모리 영역이다


스택 영역


  • 특징
    • 스택 영역은 메서드나 지역 변수와 같은 임시 데이터를 저장하는 영역이다.
    • 메서드의 호출과 함께 할당되며 메서드의 호출이 종료되면 소멸된다.
    • 데이터 입출력 측면에서는 접시를 쌓는 것처럼 LIFO ( 가장 먼저 들어온게 가장 나중에 나가는 ) 구조를 가진다.
      즉, 가장 마지막에 들어온 데이터가 가장 먼저 나가게 된다.
    • 저장되는 데이터
      • 지역 변수, 메서드 호출 정보, 기본 타입의 데이터 등이 저장된다.

데이터 생명주기 측면에서는 우리가 날마다 사용하는 ToDo 앱과 비슷하다고 보면된다. 오늘이 지나면 초기화 되는 것처럼 스택에서는 메서드가 종료되면 없어진다.

또한 데이터 입출력 측면에서는 접시를 쌓는 것과 비슷하다 첫 접시가 가장 마지막에 설거지 된다.


힙 영역


  • 특징

    • 힙 영역은 객체와 배열을 저장하는 영역이다.

    • 스택 영역과는 다르게 메서드의 호출과 종료와는 무관하게 데이터가 저장되거나 소멸된다.

    • 객체의 실제 데이터와 메타데이터(클래스 정보, 가비지 컬렉션 관련 정보 ...)가 저장된다.

    • 또한 가비지 컬렉터에 의해 사용하지 않는 객체가 정리된다.

  • 저장되는 데이터
    • 객체와 배열 등의 데이터가 저장된다.

스택이 일회용 지하철 사물함이라면 은 개인이 소유한 보관용 큰 창고라고 보면 된다. 해당 창고에는 언제든 물품을 보관할 수 있지만 가끔 정리해야한다. 가비지 컬렉터가 이런 물품(데이터)를 정리해준다.


정리


정리하자면 두 영역 사이의 주요 차이점은 스택메서드의 실행과 함께 메모리가 할당되고 해제되는 반면 객체의 생명 주기와 관련된 메모리 할당 및 해제가 이루어진다는 것이다.
그리고 스택은 메모리의 할당과 해제가 빠르지만 제한적인 메모리 크기를 가지며, 은 더 큰 메모리 공간을 차지하고 메모리 관리에 비용이 들 수 있다.


profile
backend_Devloper
post-custom-banner

0개의 댓글