2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Как правильно работать с изменяемыми данными в Haskell
Сообщение09.05.2017, 15:59 


28/09/16
5
user14284 в сообщении #1170451 писал(а):
Я не знаю всех тонкостей, но наивно считаю, что пока имя объекта в области видимости, его сборщик мусора не тронет. И наоборот. Нет?


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

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


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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group