Как я могу поэкспериментировать с сборкой мусора? - PullRequest
10 голосов
/ 29 октября 2008

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

Ответы [ 7 ]

14 голосов
/ 29 октября 2008

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

2 голосов
/ 29 октября 2008

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

1 голос
/ 30 октября 2008
0 голосов
/ 03 марта 2009

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

  • Копирование коллекторов
  • Трассировочные коллекторы
  • Коллекторы для подсчета ссылок

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

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

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

0 голосов
/ 30 октября 2008

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

http://factor -language.blogspot.com / поиск? Д = мусор + коллекция

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

0 голосов
/ 29 октября 2008

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

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

Вся концепция Эдема вздрогнула.

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

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

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

0 голосов
/ 29 октября 2008

Реализуйте свою собственную JVM. Ничего особенного, только основы. Существует множество программ / компиляторов / языков, которые генерируют код JVM, поэтому у вас есть много материала для тестирования.

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