Мне интересно, как работает сбор мусора. Я прочитал, как некоторые работы, такие как mark-and-sweep, stop-and-copy, generational GC и т.д. Я бы хотел поэкспериментировать с реализацией некоторых из них и сравнением их поведения. Какой хороший способ начать экспериментировать с моим собственным? В идеале что-то в C, Java или Python (хотя последние два сами собираются с мусором, поэтому кажется, что их будет сложно использовать)
Как я могу экспериментировать с сборкой мусора?
Ответ 1
Никогда не играл с ним сам, но тот, который всегда упоминается для использования с C/С++, Hans Boehm.
Ответ 2
среда выполнения .NET и среда выполнения Java теперь имеют открытый исходный код, поэтому вы можете поэкспериментировать с временем выполнения, если хотите играть с текущим языком программирования поддержки. Однако, если вы захотите сделать это самостоятельно, вам, вероятно, придется создать собственную среду выполнения, которая имеет собственный язык.
Ответ 3
Parrot имеет несколько сборщиков мусора.
Ответ 4
Внедрите свою собственную JVM. Ничего необычного, просто основы. Есть много и много программ/компиляторов/языков, которые генерируют JVM-код, поэтому у вас есть много материала для тестирования.
Ответ 5
Приятно поиграть, но сбор мусора - темное искусство. Не для того, чтобы он работал, но чтобы он работал с эффективностью, которую делают новейшие виртуальные машины.
Мы говорим о многоступенчатой и магии, которая делает скорость распределения более сопоставимой с распределением стека, чем malloc.
Повсюду развивается концепция эденов.
Возможно, вы захотите прочитать некоторые рекомендации по используемым технологиям.
Вот статья, которая, кажется, имеет хороший обзор (просто из быстрого google/scan)
Ответ 6
Слава Пестов, который разрабатывает Факторный язык программирования написал несколько сообщений о его реализации сборщика мусора. Вы можете найти сообщения об этом по этой ссылке:
http://factor-language.blogspot.com/search?q=garbage+collection
в частности, начните с должности в воскресенье, 24 сентября 2006 г.
Ответ 7
MMTk содержит большой набор сборщиков мусора высокой производительности. Он включает в себя:
- Копирование коллекционеров
- Трассировочные коллекторы
- Сборщики подсчета ссылок
Он также имеет:
- Остановить коллекционеры мира
- Параллельные коллекторы
Так как это исследовательская платформа, у нее есть некоторые продвинутые коллекторы, такие как сборщик подсчетов ссылок.