Garbage collection is useful
Автор, имеющий опыт работы с сборкой мусора в J9 Java VM, применяет эти знания для решения проблемы инкрементального парсинга текста. Он работает с командой, использующей Ohm для парсинга документов и ProseMirror для отображения форматированного текста с двунаправленными обновлениями. Изначально реализованное решение отслеживало все узлы после каждого редактирования, что противоречило принципу инкрементальности для больших документов с небольшими изменениями.
Решение пришло из статьи "A Unified Theory of Garbage Collection", которая показала, что трассировка и подсчёт ссылок по сути являются дуальными подходами - один работает с живыми объектами ("материя"), другой с мёртвыми ("антиматерия"). Автор внедрил подсчёт ссылок для узлов документа, позволяющий эффективно находить только те узлы, которые не были повторно использованы после редактирования, без необходимости посещения большинства узлов в документе.
Комментарии (54)
- Симметрия и асимметрия: от цитаты Перлиса к тому, что подсистемы, которые мы используем, не всегда отражают симметрию более низкого уровня, и как это влияет на проектирование.
- Обсуждение методов управления памятью: отсутствие циклов в счетчиках ссылок, трассировка только мертвых объектов в счетчике ссылок, и как эти факторы влияют на выбор между счетчиком ссылок и трассирующим сборщиком мусора.
- Практический вывод: когда и почему может быть предпочтительным счетчик ссылок, включая влияние на производительность и сложность реализации.
- Какие компромиссы между этими двумя подходами могут быть сделаны, и какие факторы (например, циклы, которые не могут быть обработаны счетчиком ссылок) делают трассирующий сборщик мусора необходимым.
Garbage collection for Rust: The finalizer frontier
включ) 3. При (0) в 0. (0 и 0 в 0. Ты в ко 0. (0) и не и (0) сок в
Комментарии (127)
- Обсуждение в основном вращается вокруг вопроса, действительно ли Rust нуждается в сборщике мусора, и если да, то какой именно: консервативный, точный или же просто счетчик ссылок.
- Участники спора подчеркивают, что Rust уже имеет встроенные механизмы управления памятью, включая владение, заимствование и счетчик ссылок, что ставит под сомнение необходимость сборщика мусора.
- Некоторые участники высказывают мнение, что встроенный в Rust счетчик ссылок может быть достаточен для большинства случаев использования, и что добавление сборщика мусора может быть излишним.
- Другие участники подчеркивают, что даже если сборщик мусора и будет добавлен в Rust, он будет опциональным и не будет влиять на существующие программы, которые не нуждаются в нем.