Как я могу экспериментировать с сборкой мусора?

Мне интересно, как работает сбор мусора. Я прочитал, как некоторые работы, такие как mark-and-sweep, stop-and-copy, generational GC и т.д. Я бы хотел поэкспериментировать с реализацией некоторых из них и сравнением их поведения. Какой хороший способ начать экспериментировать с моим собственным? В идеале что-то в C, Java или Python (хотя последние два сами собираются с мусором, поэтому кажется, что их будет сложно использовать)

Ответ 1

Никогда не играл с ним сам, но тот, который всегда упоминается для использования с C/С++, Hans Boehm.

Ответ 2

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

Ответ 4

Внедрите свою собственную JVM. Ничего необычного, просто основы. Есть много и много программ/компиляторов/языков, которые генерируют JVM-код, поэтому у вас есть много материала для тестирования.

Ответ 5

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

Мы говорим о многоступенчатой ​​и магии, которая делает скорость распределения более сопоставимой с распределением стека, чем malloc.

Повсюду развивается концепция эденов.

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

Вот статья, которая, кажется, имеет хороший обзор (просто из быстрого google/scan)

http://www.devx.com/Java/Article/21977/0/page/1

Ответ 6

Слава Пестов, который разрабатывает Факторный язык программирования написал несколько сообщений о его реализации сборщика мусора. Вы можете найти сообщения об этом по этой ссылке:

http://factor-language.blogspot.com/search?q=garbage+collection

в частности, начните с должности в воскресенье, 24 сентября 2006 г.

Ответ 7

MMTk содержит большой набор сборщиков мусора высокой производительности. Он включает в себя:

  • Копирование коллекционеров
  • Трассировочные коллекторы
  • Сборщики подсчета ссылок

Он также имеет:

  • Остановить коллекционеры мира
  • Параллельные коллекторы

Так как это исследовательская платформа, у нее есть некоторые продвинутые коллекторы, такие как сборщик подсчетов ссылок.