Как устроена память в Python
Python
Senior
Без компании
Как устроена память в Python
Ответы
В Python управление памятью осуществляется через private heap (кучу), где хранятся все объекты. Менеджер памяти автоматически выделяет и освобождает память с помощью механизма подсчёта ссылок (reference counting) и сборщика мусора (garbage collector).
**Ключевые аспекты:**
- **Reference Counting** – каждый объект содержит счётчик ссылок. Когда он достигает нуля, память освобождается.
- **Garbage Collector** – решает проблему циклических ссылок (когда объекты ссылаются друг на друга, но внешних ссылок нет).
- **Memory Pools** – Python использует пулы для оптимизации выделения памяти под мелкие объекты (например, int, str).
**Пример:**
```
import sys
a = [1, 2, 3] # Создаётся объект списка в куче
b = a # Увеличивается счётчик ссылок объекта
print(sys.getrefcount(a)) # Выведет 3 (a, b + временная ссылка в getrefcount)
del b # Счётчик уменьшается
```