Хм-м, ну вот например в Perl собиратель мусора, насколько я понимаю, работает по принципу ref-counter'а. Если нужно сделать циклическую структуру, то для этого есть функция Scalar::Util::weaken, которая уменьшит значение счётчика и память нормально освободится.
Я к тому, что никакой особой чёрной магии при использовании ref-counter'а с циклическими структурами нет. 8)