История изменений
Исправление www_linux_org_ru, (текущая версия) :
И как внешний сборщик будет строить граф объектов, определять рутовые ссылки и пр.? Сборщик мусора работает не просто с памятью, а с графом объектов.
да, похоже это можно
у меня есть набросок как сделать точный перемещающий сборщик мусора для с++ (precise moving gc for c++) — причем в том же ключе, что сказали next_time и
emulek, но я им не мешаю, хотя и могу подключиться
основная проблема, по-моему, это то, что в момент вызова сборки мусора кое-какие ссылки могут застрять в регистрах (и во временных областях, куда компилятор сбрасывает регистры); поэтому надежно будет использовать счетчики ссылок, а gc будет искать и собирать циклические ссылки
Another solution is to periodically use a tracing garbage collector to reclaim cycles. http://en.wikipedia.org/wiki/Reference_counting#Dealing_with_reference_cycles
если же уметь доставать ссылки из регистров, то похоже можно и вообще обойтись без подсчета ссылок
Исходная версия www_linux_org_ru, :
И как внешний сборщик будет строить граф объектов, определять рутовые ссылки и пр.? Сборщик мусора работает не просто с памятью, а с графом объектов.
да, похоже это можно
у меня есть набросок как сделать точный перемещающий сброщик мусора для с++ (precise moving gc for c++) — причем в том же ключе, что сказали next_time и
emulek, но я им не мешаю, хотя и могу подключиться
основная проблема, по-моему, это то, что в момент вызова сборки мусора кое-какие ссылки могут застрять в регистрах (и во временных областях, куда компилятор сбрасывает регистры); поэтому надежно будет использовать счетчики ссылок, а gc будет искать и собирать циклические ссылки — Another solution is to periodically use a tracing garbage collector to reclaim cycles. http://en.wikipedia.org/wiki/Reference_counting#Dealing_with_reference_cycles
если же уметь доставать ссылки из регистров, то похоже можно и вообще обойтись без подсчета ссылок