Для каких приложений сборщик мусора может стать проблемой? - PullRequest
0 голосов
/ 08 сентября 2010

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

Я знаю, что одна часть ответа - ", это зависит ".Однако я хотел бы знать , над какими проектами вы работали, на любом языке программирования, поддерживающем автоматическое выделение кучи памяти, , для которого сборщик мусора не был опцией или стал проблемой .

Ответы [ 2 ]

2 голосов
/ 26 сентября 2010

Я профессионально использую языки сборки мусора более 15 лет (и программирую 30 лет).Мои промышленные проекты варьировались от программного обеспечения, объединяющего данные от 8 000 торговых агентов по всему нефтяному месторождению до (мягкого) визуализации в реальном времени и программного обеспечения с малой задержкой для трейдинга.

Я считаю сборку мусора полезной во всех случаях.У меня были сомнения по поводу задержки сбора мусора в двух основных проектах: программное обеспечение для визуализации (в OCaml) и программное обеспечение для торговли альго (в F #).Однако мои опасения оказались неоправданными, поскольку решения для сбора мусора в действительности демонстрировали лучшие характеристики задержки, чем решения без сбора мусора в обоих случаях.В частности, перевод программного обеспечения для визуализации из C ++ в OCaml фактически улучшил задержки в худшем случае в 5 раз. Остановки в коде C ++ были вызваны выпадением коллекций из области видимости и подсчетом ссылок, вызвавшим лавины деструктороввызов деструкторов.Мы потратили значительные усилия, пытаясь решить эту проблему путем написания пользовательских распределителей, которые делали бы уничтожение инкрементным, но никогда не удавалось.Кроме того, мы обнаружили, что чисто функциональные структуры данных часто демонстрируют отличные характеристики задержки, и они в основном неразрешимы без сборщика мусора.

Единственное заметное исключение из моих «сборщиков мусора - это хорошо» - мораль - сборщики мусора бедного человека, такие какподсчет ссылок и консервативные сборщики мусора, такие как Boehm's GC.Я бы не стал трогать их штангой в профессиональном контексте.

1 голос
/ 17 сентября 2010

В настоящее время я работаю над программой на Haskell, которая создает Direct-Acyclic-Graph (DAG), используя 16 файлов трассировки из симуляции MPSoCs.каждый файл имеет более 115 МБ, и на самом деле мое решение требует хранения всех этих файлов в памяти в виде списка, чтобы построить группы доступности баз данных,

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

...