Освобождение объекта не гарантирует немедленного уменьшения памяти процесса: Python и системный allocator могут оставить блоки для повторного использования. Закрытие файла отдельно освобождает файловый ресурс.
Что происходит с памятью после освобождения объектов (например, закрытие большого файла) — Python возвращает её ОС или оставляет себе?
Освобождение объекта не гарантирует немедленного уменьшения памяти процесса: Python и системный allocator могут оставить блоки для повторного использования. Закрытие файла отдельно освобождает файловый ресурс.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Освобождение объекта не гарантирует немедленного уменьшения памяти процесса: Python и системный allocator могут оставить блоки для повторного использования. Закрытие файла отдельно освобождает файловый ресурс.
Если файл был прочитан в большой bytes, вызов close() не удаляет этот объект, пока на него остаются ссылки. После освобождения данных поведение зависит от размера выделения, allocator и фрагментации; часть памяти может вернуться ОС, часть — остаться у процесса. Смотрите живые объекты и RSS отдельно, а также удерживающие ссылки. Высокий RSS после пика не всегда означает утечку, но постоянный рост требует диагностики.