공부하는 밍

[Java] 스택(Stack), 힙(Heap) 메모리 본문

소프트웨어 개발/Java

[Java] 스택(Stack), 힙(Heap) 메모리

밍Z 2022. 7. 7. 16:48

스택(Stack)

  • 정적 메모리
  • 저장 대상 : 함수의 호출과 관계되는 함수, 지역변수, 매개변수 저장
  • 함수가 호출되면 할당, 호출이 완료되면 소멸
  • 컴파일 타임에 크기가 결정됨
  • 객체의 참조변수 저장 (객체의 메모리 주소)

[장점]

  • 이미 정해진 공간 존재 → 할당, 해제가 빠름
  • 함수가 종료되면 소멸되므로 변수를 명시적으로 할당, 해제할 필요가 없음

[단점]

  • 메모리 크기 제한
  • 지역변수만 저장 가능

힙(Heap)

  • 동적 메모리
  • 저장 대상 : 전역변수
  • 런 타임에 크기가 결정됨
  • 객체의 인스턴스 저장 (생성된 객체들)

[장점]

  • 변수를 전역적으로 액세스 가능
  • 메모리 크기에 제한 없음

[단점]

  • 상대적으로 느린 액세스
  • 변수를 할당, 해제함으로써 메모리 관리 필요
Comments