В обычной 64-битной сборке CPython базовый PyObject содержит счётчик ссылок и указатель на тип: часто 16 байт заголовка. Это не универсальный полный размер любого объекта.
Опишите структуру PyObject в C. Каков минимальный оверхед по памяти для любого объекта?
В обычной 64-битной сборке CPython базовый PyObject содержит счётчик ссылок и указатель на тип: часто 16 байт заголовка. Это не универсальный полный размер любого объекта.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В обычной 64-битной сборке CPython базовый PyObject содержит счётчик ссылок и указатель на тип: часто 16 байт заголовка. Это не универсальный полный размер любого объекта.
PyVarObject добавляет размер переменного объекта, а конкретные типы — собственные поля. GC-метаданные, выравнивание и allocator увеличивают затраты; sys.getsizeof не считает всю достижимую память. Free-threaded и специальные сборки используют другое устройство заголовка. Поэтому минимальный overhead следует уточнять для версии, архитектуры и конфигурации CPython.
Источник: docs.python.org.