LINUX.ORG.RU

libgc 1.0 - библиотека автоматической сборки мусора для C++


0

0

LibGC - небольшая, быстрая, портируемая и многопоточная библиотека сборки мусора для C++, распространяемая по лицензии BSD. Разработчик отмечает простоту и гибкость в использовании, а также эффективность. А что скажете вы? :)

>>> Домашняя страница



Проверено: Shaman007 ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

А нафига козе баян?..

Я видел и кривые приложения, которые писаны на языках с гравицапой (ну кушали они рам ложками), а тут гравицапу в плюсы ставить хотят...

Покажите мне, хоть кто-то пример, когда нужна гравицапа и не спасает delete (про склероз разработчика мы знаем, но тут можно и его ide научить delete строкой ниже ставить...)

catap ★★★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Альтернатива сборки мусора в яве?

OpenStorm ★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

иногда лучше молчать. если ты не имел никогда промышленного опыта разработки ПО, это отнюдь не значит, что ты самой умный, ок?

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Использование GC (или reference count) упрощает логику программы. К тому же не всегда очевидно, где именно вставлять delete :)

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Вы пример такого упращения...

А на тему, что не очевидно когда... Это возможно, но на то вам и дан мозг, что бы понять, когда надо удалить объект, а не надеятся на гравицапу.

catap ★★★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

а sp чем не хватает?

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Все такие умные, аж стоять рядом стыдно. Автоматическая сборка мусора и уплотнение памяти - это отдельные большие темы в С++, а тут вроде как инструмент предлогают и что самое главное открытый, так что поковырять его можно и присовокупить к делу(если устроит), но крутым перцам чужого не нада. Сами с усами. В сабж хоть кто-нибудь из постеров углубился или чукчи не читатели?

mutronix ★★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

дело совсем не в склерозе
если бы вся проблема была именно в делите то ауто_птр бы все проблемы решил на раз
иногда динамические переменные существуют дольше чем локальный контекст функции и тогда часто возникает вопрос - а как и когда его убивать? гц тут пусть дешево и сердито но все таки пользительно
даже сам Страуструп ничего против гц в плюсах никогда не говорил
проверьте сами - почитайте Бьярна

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>Это возможно, но на то вам и дан мозг, что бы понять, когда надо удалить объект, а не надеятся на гравицапу.

Когда надо удалять и где надо удалять - немного разные понятия. Зная _когда_ надо удалять не всегда возможно решить _где_ надо удалять.

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

WFrag ★★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Не, в принципе вещь полезная, жаль только проект под винду заточен и с g++ не тестировался. Хотя автор и приводит рекомендации как портировать на другие платформы.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

чем оно лучше, скажем, чем bohem gc, который идет в составе gcc ? Кто-нибудь в курсе?

walrus ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

> Разве что кроме случаев где это действительно чем-то обоснованно.

Например если своевременное удаление объекта является критичным моментом для программы.

mutronix ★★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Ну и новость. Такие "открытия" сплош и рядом пользуются. Ладно бы тут вели учебный курс по С++, но при чем тут линукс и какая это новость если подоные весчи описаны годы (если не десятилетия) назад?

Исключения не обрабатываются. Такой тряпочкой дырявую голову инженера можно только на половину прикрыть.

zZzZ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

если писать программу на C++ полностью используя сборку мусора, то зачем тогда вы взяли именно этот язык программирования?

chuchelo ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>В смысле? Имеются в виду исключения в деструкторе?

Вообще никакие. Оно само обосреться и тебе всю жизнь испортит. Куча - статический массив.

zZzZ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Полный дебилизм) БАЯНЪ! Есть куча средств уже давно протестированых, стабильных.. Си++ рулит, а сборщик мусора для него.. хм... Придумали точно поцы, поцы реализовали, кто будет пользоваться? Поцы))) IMHO

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>Например если своевременное удаление объекта является критичным моментом для программы.

Чаще всего критичным является своевременное освобождение некоторого ресурса (причем не памяти). Удаление объекта - всего лишь один из способов этого достичь, правда как раз больше всего подходящий под идеологию C++.

WFrag ★★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

C++ - объектно-ориентированный язык, поэтому естественно связать ресурс с объектом и в деструкторе его освободить, других путей просто нет.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

не всегда delete спасает!

Мозг дан думать, а эта тулза могут помочь думать... Хотя можть у тя проц в мозг интегрирован, все может быть и ты помнишь все выделения памяти, даже когда делаешь связные списки, да вообще работаешь с динамическими данными...

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

> C++ - объектно-ориентированный язык, поэтому естественно связать ресурс с объектом и в деструкторе его освободить, других путей просто нет.

Вот и не правда ваша. Часто в классе ведется подсчет ссылок на объект и деструктор не удаляет объект до тех пор пока на него ссылается хотя бы один указатель-дескриптор(до боли знакомо, правда?) В этом случае за удаление объекта отвечает закрытая функция-член класса вызываемая из деструктора или перегруженного оператора "=", а не сам деструктор. Управление памятью в С++ это отнюдь не простая задача. Это же не Java.

mutronix ★★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>C++ - объектно-ориентированный язык, поэтому естественно связать ресурс с объектом и в деструкторе его освободить, других путей просто нет.

Да, но можно по разному связать ресурс и объект. Например, можно освобождать ресурс из dispose(). :) То есть освобождение в деструкторе - вообще не единственный вариант.

Я имел ввиду, что в C++ принято управлять ресурсами основываясь на принципе RAII.

WFrag ★★★★ ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Скажем, что чем это оно лучше Boehm GC?

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Вы, деточка, пока ещё очень глупы и малограмотны. Вам лечится надо, йада там попить, в Бобруйск на грязелечение сгонять...

Явное освобождение памяти во многих случаях будет крайне неэффективным, в сравнении с инкрементальным, и часто просто недопустимо в задачах реального времени. Удаление разлапистой структуры неизвестного заранее объёма может скушать больше времени, чем разрешено потратить единовременно на memory management, тогда как как GC реального времени просто отложит удаление остатков структуры на лучшие времена.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Чудило, не всегда ты вообще имеешь право удалять объекты явным образом. Это крайне неэффективно и по времени, и по памяти.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>Вот и не правда ваша. Часто в классе ведется подсчет ссылок на объект и деструктор не удаляет объект до тех пор пока на него ссылается хотя бы один указатель-дескриптор(до боли знакомо, правда?) В этом случае за удаление объекта отвечает закрытая функция-член класса вызываемая из деструктора или перегруженного оператора "=", а не сам деструктор.

ОБАНА! Единственный интерестный пост во всем этом треде о домашней работе для студента младшего курса!

А не растолкует ли уважаемый сэр что он собственно имел ввиду? Если я правильно понял, то тут два постулата:

1) Деструктор вызывается, а объект не уничтожается - ибо ссылок на него есть и так моного раз...

2) Из перегруженного оператора = вызывается некая "закрытая функция-член класса", которая и уничтожает объект, не вызывая его деструктор.

Был бы счастлив получить урок эксперта!

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>Явное освобождение памяти во многих случаях будет крайне неэффективным, в сравнении с инкрементальным, и часто просто недопустимо в задачах реального времени. Удаление разлапистой структуры неизвестного заранее объёма может скушать больше времени, чем разрешено потратить единовременно на memory management, тогда как как GC реального времени просто отложит удаление остатков структуры на лучшие времена.

Еще один "эксперт" мля. А я то думал почему подавляющее больштнство RT приложений пишут на жабе! Понял тапереча спасибочки!

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>Вот уж какая форма GC почти никогда недопустима, так это подсчёт ссылок.

А я то думаю почему в случае shared ownership в жабских программах ссылки считают? Понял таперича - неправильно делают. А как правильно то? Научи.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>Чудило, не всегда ты вообще имеешь право удалять объекты явным образом. Это крайне неэффективно и по времени, и по памяти.

Не растолкует ли уважаемый сэр ламеру, каким образом это накладно по времени и по памяти?

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Парой постов выше это растолковано. Когда надо удалить хэш-таблицу о паре сотен мегабайт, а у тебя на memory management по регламенту предусмотренно строго не более 0.1% машинного времени в рассчёте на одну минуту, то делать это явным образом - бред свинячий, тогда как GC легко с задачей справится, причём - без каких бы то ни было дополнительных накладных расходов.

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

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Чудило, ты что, думаешь, что жаба - единственный рантайм с GC? Да ты болен неимоверно, тебя в газенваген надо, на профилактику.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>Когда надо удалить хэш-таблицу о паре сотен мегабайт, а у тебя на memory management по регламенту предусмотренно строго не более 0.1% машинного времени в рассчёте на одну минуту, то делать это явным образом - бред свинячий, тогда как GC легко с задачей справится, причём - без каких бы то ни было дополнительных накладных расходов.

А я выделю блок в пару сотен мегов, размещу там свою таблицу и грохну ее за один раз - просто грохнув блок. Или вообще не буду грохать, а использую для другой такой таблицы или ... короче - куча способов - только ДЕБИЛ не догонит. А вообще говоря, я по глупости своей думал, что в RT приложениях обычно память динамически стараются не распределять...

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

действительно козе баян нафиг...

а про примеры, так всякие есть... я например, знаю о проекте, который потерял в производительности от того, что ветераны плюсов (а проект на .NET) решили ее улучшить выгружая объекты сами (IDisposable) и т.д.

ФАКТ - выделение и освобождение памяти не самые быстрые операции. Так, что ... примеры есть всякие.

А вот плюсам врядли гравицапа поможет... Потому как уже так много кода используется с объектами где ресурсы освобождаются именно в деструкторе... Так, что libgc только добавит головной боли для проектов работающих с системными ресурсами.

А для тех кто уверен, что delete отнимает время у программиста на обдумывание, то оч. сильно ошибается.. такие вещи уже давно находятся в их мозжечках и выполняется автоматически. Т.е. никто не задумывается над каждым своим шагом при ходьбе.

Врядли проект выйграет во времени, заменив время потраченное при решении хорошо известной задачей исправления memory leak-ов с использованием широкого набора инструментов, на поиск и разрешения конфликтов доступа к ресурсам.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>Чудило, ты что, думаешь, что жаба - единственный рантайм с GC? Да ты болен неимоверно, тебя в газенваген надо, на профилактику.

Ну чтож, в газенваген всегда успеется, а не будете ли вы так любезны, не скажете ли мне ламеру, какие RT "рантаймы c GC" вы знаете?

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

> А вообще говоря, я по глупости своей думал, что в RT приложениях обычно память динамически стараются не распределять...

Это раньше так было, когда еще не было правильных, доказанных RT GC. Вот и приходилось лечить головную боль топором, отказываясь от динамического распределения памяти вообще. Зато теперь...

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>итай, как нормальные GC устроены - про компактифицирующий stop and copy, про инкрементальный mark and sweep..

Спасибочки за совет. Вы забыли еще слово multigenerational. Так ведь читал и доки и исходный код, и сам писАл - по глупости - в студенчестве зеленом...

И что?

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

>выгружая объекты сами (IDisposable)

Дааа. Выгружать объекты с помощью IDisposable ... Побойтесь бога! Я хоть не треплю о том, всем не ухо не рыло! А то один у живого объекта сто раз деструктор вызывает, другой объекты "выгружает" с помощью IDisposable, третий кучу объектов на раз незнает как убить - это что? Я отсюда ухожу. В жопу таких собеседников.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

Ну ты правильно догнал тему, что ты - дебил.

Любишь искать приключения на свою убогую жопу, изобретать лишний раз велосипед, и писать что-то, по функциональности аналогичное GC - тогда как прекрасно мог бы воспользоваться уже готовым - ну так сам себе этически ограниченный антропоморфный дендроид.

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

И то, что был дебилом, дебилом и помрёшь. Считать ссылки будет только идиот, когда есть гораздо более эффективные алгоритмы. А уж как хорошо считать ссылки на циклических структурах - просто сказка и пейсня, все конкретные пацаны чиста ссылки и считают...

anonymous ()

Re: libgc 1.0 - библиотека автоматической сборки мусора для C++

сходи на гугль со словами "real time garbage collector" и просвещайся до растительного состояния. Ну а потом уж не забудь проследовать в газенваген.

anonymous ()

вот что я скажу...

Какое отношение имеет этот убогий windoze-only junk к *NIX|Linux ?

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