왜 이 영상을 봐야 하나요?
애플리케이션이 실행될 때 객체를 포함하여 데이터가 메모리에 어떻게 저장되는지 알아야 개발 중에 실수하지 않을 수 있고 애플리케이션의 성능과도 어떻게 연관있는지 이해할 수 있기 때문입니다.
애플리케이션은 어떻게 실행되는가?
메모리 구조
스택 메모리의 개념
스택 메모리의 특징
카운터 객체의 주소 값 (영상 9:30~19:30)
Garbage 컬렉터의 동작
파이썬의 객체 표현
From CHAT GPT
메모리 관리는 프로그래밍에서 중요한 주제 중 하나입니다. 프로그램이 데이터를 저장하고 처리하는 데 사용하는 두 가지 주요 메모리 영역인 스택(Stack)과 힙(Heap)에 대해 설명하겠습니다.
스택 (Stack):
정적 메모리 할당: 스택은 정적 메모리 할당 영역으로, 주로 메서드 호출과 관련된 데이터를 저장하는 데 사용됩니다. 각 함수(메서드) 호출 시 스택 프레임이 생성되며, 이 프레임에는 해당 함수의 로컬 변수, 매개변수, 반환 주소 등이 저장됩니다.
LIFO (Last-In-First-Out): 스택은 후입선출(LIFO) 원칙을 따릅니다. 가장 최근에 추가된 데이터가 가장 먼저 제거됩니다.
데이터 크기 고정: 스택은 크기가 고정되어 있으며, 컴파일 시점에 결정됩니다. 이로 인해 메모리 낭비가 발생하지 않습니다.
빠른 접근: 스택은 메모리 할당 및 해제가 빠르며, 데이터 접근 시간이 짧습니다.
주로 함수 호출 및 로컬 변수와 같이 데이터의 범위와 생존 기간이 제한된 데이터를 저장하는 데 사용됩니다.
힙 (Heap):
동적 메모리 할당: 힙은 동적 메모리 할당 영역으로, 프로그램 실행 중에 데이터를 저장하는 데 사용됩니다. 힙은 메모리를 동적으로 할당하고 해제할 수 있으므로 데이터의 크기와 생존 기간이 유연합니다.
데이터의 크기 다양: 힙은 데이터 크기가 다양하며, 데이터의 크기를 런타임에 결정할 수 있습니다.
수동으로 할당 및 해제: 힙에서 메모리를 할당하고 해제하는 작업은 프로그래머가 수동으로 수행해야 합니다. 메모리 누수를 방지하기 위해 주의가 필요합니다.
데이터 접근 시간 상대적으로 느림: 스택에 비해 데이터에 접근하는 데 시간이 더 오래 걸립니다.
주로 동적으로 생성된 객체, 배열 및 데이터 구조를 저장하는 데 사용됩니다.
요약하면, 스택과 힙은 다른 목적을 가진 두 가지 메모리 영역입니다. 스택은 정적 메모리 할당에 사용되며 주로 함수 호출과 관련된 데이터를 저장합니다. 반면에 힙은 동적 메모리 할당에 사용되며 데이터의 크기와 생존 기간이 유연하며, 객체와 데이터 구조를 저장하는 데 주로 사용됩니다. 개발자는 언제 어떤 메모리 영역을 사용할지 신중하게 결정해야 합니다.