2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
 Re: Как правильно работать с изменяемыми данными в Haskell
Сообщение09.05.2017, 15:59 
user14284 в сообщении #1170451 писал(а):
Я не знаю всех тонкостей, но наивно считаю, что пока имя объекта в области видимости, его сборщик мусора не тронет. И наоборот. Нет?


Нет. Если бы всё работало как Вы описали, сборщик мусора был бы не нужен - объекты просто бы удалялись по мере выхода переменных из области видимости. Проблема в том что на один и тот же объект может быть несколько ссылок. Пример:

Используется синтаксис Haskell
foo = let xs = [1, 2, 3] in (0 : xs)


Таким образом, область видимости переменной xs заканчивается, но ссылку на список xs хранит список foo, поэтому сборщик мусора ничего с xs не сделает. В целом сборщик мусора работает грубо говоря так - периодически считает сколько всего ссылок на объект, если их нет - удаляет объект. На самом деле современные алгоритмы сборки мусора намного сложнее, но общий принцип такой.

 
 
 [ Сообщений: 16 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group