LINUX.ORG.RU

Re: Сборка мусора

ищи в новотях, недавно обсуждали библиотеку для сборки мусора.

fghj ★★★★★ ()

Re: Сборка мусора

не плодить его, использовать smart pointer с подсчётом количества ссылок

anonymous ()
Ответ на: Re: Сборка мусора от watashiwa_daredeska

Re: Сборка мусора

>> использовать smart pointer с подсчётом количества ссылок

>Подсчёт количества ссылок - не панацея.

Пример в студию

anonymous ()
Ответ на: Re: Сборка мусора от anonymous

Re: Сборка мусора

Посчитай мне ссылочки на цикличном графе, деточка. А мы будем стоять в стороне и истерично ржать.

anonymous ()
Ответ на: Re: Сборка мусора от anonymous

Re: Сборка мусора

> Циклические ссылки слышал что такое?

smart pointer всево лишь механизм, не панацея, он имеет свои ограничения, циклические ссылки - основное ограничение, просто надо о них знать и помнить. например, когда говорят о простых указателях никому не призодит в голову писать такой код:

int * intI;

*intI = 785;

это ограничение простых указателей, почему тогда когда говорится о smart pointer допускается мысль о том что возможны циклические ссылки? когда пишешь с smart pointer-ами, просто помнишь об этом ограничении и не допускаешь подобных ситуаций на уровне дизайна, так же как не допускаешь код указенный выше.

> Посчитай мне ссылочки на цикличном графе

из самой природы smart pointer, вследствии ограничений упомянутых мною выше, видно что их нельзя применять в этой задаче (to anonymous: думая что открываешь кому-то глаза на реали этого мира, ты жестоко ошибаешься), очисткой пямяти в этой задаче должен заниматься класс представления графа, а не класс представления узла графа, и всё будут хорошо.

Наличие в названии smart pointer слова smart, не избовляет программиста от наличия у него самого этого самого ума.

Ещё раз smart pointer - замечательный механизм автоматической чистки памяти, и, с присущими ему ограниченияим, силно упрощает жизнь. Неучёт этих ограничений ведёт к проблемам. В ряде задач в силу этих ограничений этот механизм не применим, в таких случаях использования проблема очистки памяти решается другими путями и без применения сборщиков мусора, всего навсего грамотным дизайном.

anonymous ()
Ответ на: Re: Сборка мусора от anonymous

Re: Сборка мусора

> циклические ссылки - основное ограничение, просто надо о них знать и помнить.

В этом и заключается неполноценность GC, основанного на подсчёте ссылок, в отличие от tracing GC, скажем. А вот этот самый tracing GC в C++ полноценно реализовать нереально, хотя есть методики, работающие более-менее сносно, например, conservative gc.

http://www.google.ru/search?q=c%2B%2B+conservative+garbage+collector

watashiwa_daredeska ★★★★ ()
Ответ на: Re: Сборка мусора от watashiwa_daredeska

Re: Сборка мусора

> В этом и заключается неполноценность GC, основанного на подсчёте ссылок, в отличие от tracing GC, скажем. А вот этот самый tracing GC в C++ полноценно реализовать нереально, хотя есть методики, работающие более-менее сносно, например, conservative gc.

Ещё раз - задачи уборки мусора успешно решаются примитвами типа smart pointer и насичием здравого смысла и без применения централизованного механизма сбора мусора. Примеров задач где эти два паттера не дали бы результата в задаче упрощения управлением памяти приведено не было, как не было приведено (возвращаясь к началу топика) задачи требующей "полноценную сборку мусора"

anonymous ()
Ответ на: Re: Сборка мусора от anonymous

Re: Сборка мусора

> задачи уборки мусора успешно решаются примитвами типа smart pointer

Успешно, но не полноценно. Полноценно - это когда у программиста об этой рутине не болит голова вообще, а с подсчётом ссылок так не получается - всё время надо держать в уме подводный камень в виде циклических ссылок.

> задач где эти два паттера не дали бы результата в задаче упрощения управлением памяти

Я не спорю, smart pointer даёт _упрощение_ задачи управления памятью, но не снимает эту задачу полностью с плеч программиста, как это делает полноценный gc.

watashiwa_daredeska ★★★★ ()
Ответ на: Re: Сборка мусора от anonymous

Re: Сборка мусора

> как не было приведено (возвращаясь к началу топика) задачи требующей "полноценную сборку мусора"

Нет таких задач. И задач, _требующих_ smart pointer тоже нет. Все эти задачи можно решить и с ручным управлением памятью, просто это менее удобно и больше рутинных задач забивают голову.

watashiwa_daredeska ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.