Как работает сборка мусора в отношении Ctx.Owner в scala.rx?
Я пытаюсь обернуть голову, как именно владельцы работают в scala.rx. На данный момент у меня есть веб-приложение Scala.js, которое просто импортирует rx.Ctx.Owner.Unsafe._
везде, где я использую Rx
s. Это - однако - приводит к созданию большого количества отдельных элементов DOM, потому что этот небезопасный глобальный владелец сохраняет ссылку на все Rx
Он когда-либо создан и никогда не отпускает их. Таким образом, все элементы DOM, которые я создаю с помощью scalatags и scalatags-rx, остаются в моем приложении навсегда как отдельные элементы.
То, что я хотел бы сделать сейчас, это создать implicit val pageOwner: Ctx.Owner = Ctx.Owner.safe()
для каждой из страниц моего приложения и после перехода от этой страницы, я хотел бы как-то kill()
все Rx
принадлежат этому владельцу, поэтому они могут быть собраны мусором. Здесь нет kill()
метод, определенный на Ctx.Owner
, поэтому мне было интересно, если сборка мусора будет работать, если сам владелец мусора.