@Sazoks

Как происходит чистка памяти в Python?

Добрый день! Начали изучать на 1-м курсе ВУЗа Python.
Мне после 3 лет С++ принципиально важно знать, как устроено все под капотом.
Преподы, к сожалению, молоды аспиранты и сами мало что знают.

Скажите, пожалуйста, вот если я из списка удалю элемент любым из следующих способов: del x[1], x.pop[1], x.remove[1]. Данные ведь сохранятся в памяти?
x = [1, 2, 3, 4, 5]
a = x[4]
x.remove(5)
print(a)

print(a) выведет в консоль 5, хотя я вроде бы удалил данные. То же самое происходит и с del, и c pop. Я знаю, что в Python'е все переменные - ссылки на объекты. И все эти методы просто удаляют ссылки, но что же делать с ненужными данными? Неужели они так и останутся висеть в памяти до конца работы программы?

Буду очень благодарен за Ваши ответы!
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
sswwssww
@sswwssww
Если не осталось ссылок на объект в памяти(счетчик ссылок на объект = 0 (на самом деле не совсем 0, но это уже связано со внутренними механизмами интерпретатора, это нас волновать не должно)) - объект удаляется сборщиком мусора. За удаление объектов вам переживать не стоит.
Т.е. в вашем примере, ссылки на объект еще остались (a = x[4]), поэтому автоматически не происходит удаление объекта.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kirillinyakin
В Python автоматический сборщик мусора реализован
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы