힙과 스택은 메모리 관리의 핵심 요소이며, 각각 다른 목적과 기능을 가진다.
MyClass obj = new MyClass(); // obj는 힙에 저장된 MyClass 객체를 가리킵니다.
public void myMethod() {
int a = 10; // 'a'는 스택에 저장됩니다.
anotherMethod(); // anotherMethod의 스택 프레임이 스택에 추가됩니다.
}
힙 메모리는 동적 데이터를 저장한다고 했는데, 그럼 스택 메모리는 정적 메모리를 저장하는걸까?
-> 스택은 '정적'이라기보다는 각 함수 호출과 관련된 '지역적'이고 '임시적'인 데이터를 위한 메모리 공간이라고 봐야한다.
프로그램이 종료되면 힙과 스택에 저장된 데이터도 같이 사라지는데 힙과 메모리는 '단기기억 메모리'인가?
-> '단기기억 메모리'는 잠시 동안 정보를 유지한 다음 사라지는 메모리를 말한다. 이 개념을 힙과 스택에 적용한다면 스택은 함수 호출 시마다 생성되고 함수가 끝날 때 제거되므로 단기기억에 가깝다. 반면, 힙은 프로그램 실행 동안 지속적으로 사용되는 데이터를 저장하기 때문에 엄밀히 말하면 '단기기억 메모리'라기보다는 '동적으로 관리되는 장기 메모리'에 더 가깝다.
힙과 스택은 프로그램의 메모리 관리 방식에서 중요한 역할을 하는데, 스택은 빠른 속도로 변경되는 임시적인 데이터를 위한 공간이며, 힙은 동적으로 할당되고 해제되는 상대적으로 지속적인 데이터를 위한 공간이다. 이들은 컴퓨터 메모리 관리의 핵심 구성요소로서, 각각 고유의 역할과 특성을 가지고 있다.