Stack Memory와 Heap memory

Soobin Kim·2024년 3월 26일

Java

목록 보기
7/47

Stack Memory

  • 기본 자료형 변수들의 값이 저장된다.

  • 객체 등의 레퍼런스(참조)가 저장된다.

  • 각 스레드마다 별도로 할당된다.

  • 주로 메소드 호출과 관련된 데이터를 보관하고 관리하는 데 사용된다. 각 메소드 호출 시 지역 변수 및 메소드 호출에 필요한 데이터를 저장한다.

    • Stack은 Last In First Out (LIFO) 구조를 가지고 있어서, 가장 최근에 호출된 메소드가 가장 위에 쌓이고, 해당 메소드의 실행이 종료되면 스택에서 제거된다.

Heap Memory

프로그램 실행 중에 동적으로 할당되는 메모리 영역

  • 정적인 크기가 아닌 필요에 따라 크기가 조정되는 메모리 영역으로, 가변적인 데이터 구조를 구현하는 데 사용된다.

  • 프로그램이 실행되는 동안 필요한 만큼의 메모리를 동적으로 할당할 수 있다.

    • 프로그램 실행 중에 생성 및 소멸된다.
    • 프로그래머가 필요에 따라 메모리를 할당하고 해제할 수 있다.
    • 예를 들어, 배열의 크기를 실행 중에 동적으로 조정하거나 연결 리스트와 같은 자료 구조를 구현할 때 힙 메모리가 활용된다.
  • 객체를 저장하고 관리하는 영역이다.

  • 가비지 컬렉션은 힙 메모리에서 더 이상 사용되지 않는 객체를 자동으로 해제한다.

    • 프로그래머가 명시적으로 메모리를 해제할 필요가 없도록 한다.
    • 불필요한 메모리 사용을 방지하고 메모리 누수를 예방한다.

0개의 댓글