Ответ
Да, Garbage Collector (GC) в Android (через ART/Dalvik) умеет обрабатывать циклические ссылки. Он использует алгоритм mark-and-sweep, который помечает достижимые объекты, начиная с GC Roots (статические поля, активные потоки и т.д.), а все непомеченные (включая циклические ссылки без внешних связей) удаляет.
Пример:
class Node(var next: Node? = null)
fun createCycle() {
val a = Node()
val b = Node(a)
a.next = b // Цикл: a → b → a
}
После выхода из createCycle() оба объекта станут недостижимыми и будут собраны GC, несмотря на циклическую ссылку.