#garbage-collection #heap-memory #compiler-theory #object-layout
#сборка мусора #куча-память #теория компилятора #объект-макет
Вопрос:
В рамках моей магистерской диссертации я пишу компилятор для объектно-ориентированного языка, который был разработан в моем родном университете. В настоящее время компилятор выводит ассемблер, который выполняется на виртуальной машине. Виртуальная машина обрабатывает все операции со стеком, генерацию объектов, управление кучей и сборку мусора.
Целевой архитектурой для моего компилятора является процессор, подобный MIPS.
Я ищу стратегии для разработки макета объекта и идеи для реализации и запуска сборки мусора во время выполнения. Я мог бы, конечно, проанализировать, как GCC реализует это с помощью C , но я бы предпочел, чтобы мне указали на некоторые хорошие публикации / ресурсы.
Комментарии:
1. Разрешен ли подсчет ссылок?
2. Почему бы и нет. Было бы нормально для первого рабочего решения.
Ответ №1:
Ознакомьтесь с внутренним управлением объектами Python. Они используют подсчет ссылок и удаляют объекты, когда количество ссылок стремится к нулю.
Вот более старый (но все еще полезный) документ: http://docs.python.org/release/2.5.2/ext/refcounts.html
Вот общие сведения: http://en.wikipedia.org/wiki/Reference_counting
И еще кое-что: http://code.google.com/p/augustus/wiki/OptionalGarbageCollection