상세 컨텐츠

본문 제목

스택(Stack)과 힙(Heap)

자바

by is_JM 2024. 3. 9. 21:49

본문

스택(Stack)과 힙(Heap)

스택(Stack)

  • 메모리의 선형 자료구조
  • 후입선출(LIFO, Last-In-First-Out)의 원칙
  • 각 함수 호출 시 함수의 매개변수, 로컬 변수 및 복귀 주소 등이 스택 프레임(Stack Frame)에 순서대로 쌓임
  • 함수가 실행을 마치고 반환할 때, 해당 함수에 할당된 스택 프레임이 제거되며 이전 함수로 돌아감
  • 스택은 크기가 제한되어 있고, 일반적으로 고정된 크기를 가짐

힙(Heap)

  • 동적으로 메모리를 할당하고 해제하는 데 사용
  • 객체와 배열 등의 동적으로 할당되는 데이터가 힙에 저장됨
  • 힙은 메모리가 할당될 때에는 빈 영역을 찾아 할당하고, 해제할 때 다시 사용 가능한 빈 공간으로 돌아감
  • 스택과 달리 크기가 동적으로 변하며, 운영 체제 또는 프로그래밍 언어에 따라 동적으로 관리됨
  • 힙에 저장된 데이터는 프로그래밍 종료되거나 명시적으로 해제되기 전까지 메모리에 남아있음

스택과 힙의 차이점

  스택
용도 함수 호출과 로컬 변수에 사용 동적으로 할당되는 데이터에 사용
동작 방식 후입선출 구조 동적으로 할당되고 해제
크기 정적이며 제한되어 있음 동적으로 크기가 변할 수 있음
속도 데이터의 추가와 제거가 빠름 데이터의 추가와 제거가 더 느릴 수 있음

'자바' 카테고리의 다른 글

메모리 누수  (0) 2024.03.10
[자바(Java)] 메소드 오버라이딩(Overriding)과 메소드 오버로딩(Overloading)  (0) 2024.03.09
자바(Java)  (2) 2023.12.31

관련글 더보기