Представление объекта кучи для языка OO

#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