Исходный код GC - PullRequest
       9

Исходный код GC

8 голосов
/ 24 ноября 2011

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

Есть ли какая-нибудь хорошая и простая реализация GC для поколений?Вторая лучшая вещь - это хорошие ресурсы и рекомендации!

Спасибо!

Ответы [ 7 ]

6 голосов
/ 24 ноября 2011

Я написал сборщик мусора Qish (больше не поддерживается, но не стесняйтесь спрашивать).Это бесплатное копируемое поколение GC для C (с некоторыми ограничениями стилей кодирования).

Плагин GCC MELT [meta-] (бесплатный, под лицензией GPLv3), обеспечивающий язык высокого уровня,MELT, расширяющий компилятор GCC, также имеет копирующий GC выше существующего сборщика мусора Ggc GCC.Посмотрите на gcc / melt-runtime.c

При копировании GC из поколения в поколение генерация кода приложения на C весьма полезна.См. мой документ DSL2011 по MELT

Не стесняйтесь спрашивать меня больше, я люблю говорить о моих GC-ов.

Конечно, чтение Сборка мусораСправочник: Искусство автоматического управления памятью (Джонс, Хоскинг, Мосс) [ISBN-13: 978-1420082791] является обязательным


(добавлено в 2017 году)

Посмотрите также на Систему пулов памяти Ravenbrook , которую можно использовать для генерации ГХ.

Посмотрите также на среду выполнения Ocaml , которая имеетХороший (однопоточный) GC.


PS.Отладка копирования GC из поколения в поколение является болезненной.

5 голосов
/ 24 ноября 2011

Java HotSpot GC

Здесь вы можете ознакомиться с различными реализациями GC, предоставляемыми JVM .

В документе Управление памятью приведеныобзор различных сборщиков мусора, реализованных в JVM.Его с 2006 года, поэтому он пропускает новые детали коллектора G1, но это хорошая отправная точка.

SG Mon GC

Новый Mono SGen находится на github тоже.Проверьте файлы sgen.

4 голосов
/ 24 ноября 2011

Фреймворк Ovm имеет открытый исходный код и предлагает фреймворк, позволяющий выбрать несколько функций, касающихся сбора мусора для систем реального времени.

По данным веб-сайта

Включает инфраструктуру Minuteman RTGC, которая позволяет выбирать из недавно поддерживаемых функций RTGC: планирование на основе времени (периодическое, слабое и гибридное - сочетание обоих), инкрементное сканирование стека, репликация или барьер Брукса, инкрементное копирование объекта, массивы, использование памяти и профилирование и трассировка GC-пауз.

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

Надеюсь, это поможет.

3 голосов
/ 24 ноября 2011

В виртуальной машине Parrot также используется сборщик мусора поколения .

3 голосов
/ 24 ноября 2011

Проект V8 (движок Javascript, используемый в Chrome и Android) имеет открытый исходный код и имеет простой сборщик мусора поколений.

Вы можете просматривать исходный код онлайн .В частности, посмотрите на heap.cc (реализацию алгоритма heap и scavenge), spaces.cc (низкоуровневая куча) и mark-compact.cc (полный сборщик мусора).

2 голосов
/ 25 ноября 2011

Хотя это не написано на C, JVM JikesRVM содержит несколько реализаций GC, включая пару поколений, и я думаю, что это довольно просто понять.

1 голос
/ 24 ноября 2011

Сборщик мусора Boehm обычно используется для проектов на C и C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...