Skip to content

Latest commit

 

History

History
27 lines (25 loc) · 1.39 KB

Stack&Heap.md

File metadata and controls

27 lines (25 loc) · 1.39 KB

Stack

  • 함수가 수행 중인 경우에만 함수 내 데이터에 접근할 수 있는 임시 메모리 할당 체계이다.
  • 함수 실행을 끝 마치자마자 메모리를 자동으로 할당/해제 한다.
  • stack에 비해 상당히 빠르다. (상대적)
  • heap 메모리 영역에 비해 저장 공간이 작다.
  • 프로그래머가 신경쓸 필요 없다. (알아서 할당/해제 되므로)

Heap

  • 자동으로 할당 해제되지 않는다.
  • 처리 시간(엑세스 시간)은 stack에 비해 상당히 느리다. (상대적)
  • 객체를 선언하면 항상 heap 메모리 영역에 생성된다.
  • 객체에 대한 참조 정보는 stack 메모리 영역에 저장된다.
  • heap 메모리 영역에 저장된 데이터는 수행중인 모든 스레드에서 볼 수 있기 때문에 stack 메모리 할당만큼 안전하지 않음.
  • stack 메모리 영역에 비해 상당히 크다.
  • 프로그래머가 잘 관리하지 못하면 메모리 누수가 발생할 수 있다.

Stack vs Heap

Stack Heap
위치 연속적 메모리 공간 불연속한 메모리 공간에 위치
컴파일 타임에 정해진 대로 수향 프로그래머가 직접 작성
비용 작다 크다
구현 쉽다 어렵다
처리속도 빠르다 늘디
이슈 메모리 shortage 메모리 fragmentation
크기 정해짐 유연함
선형적 계층적