Цитата:
Сообщение от
AndyD
Что это за циклы в каждом присваивании на X++?
Была в блоге команды разработчиков X++ статья
X++: Garbage Collection and Ax Performance Whitepaper (занятно, сейчас ее в блоге не найти), там объяснялось, что детерминированный сборщик мусора в X++ поддерживает для каждого объекта
два счетчика: один - для учета ссылок на объект (reference count) и второй - для учета "петель" ссылок (loop count), в которых участвует объект.

Объект не подлежит уничтожению до тех пор, пока число ссылок на него больше числа "петель" ссылок, в которых он участвует. Так вот, при каждом присваивании переменной ссылки на тот или иной объект сборщик мусора должен не только увеличить счетчик ссылок на этот объект, но и по графу ссылок между объектами пересчитать счетчик "петель" для него. А длительность последней операции с увеличением числа связанных между собой объектов имеет тенденцию расти экспоненциально.