Flux 是如何被垃圾回收的?

How Fluxes are garbage collected?

假设我创建了一个 Flux。此 Flux 在创建期间已获得访问某些资源的权限,我希望在 Cancel/Complete 上进行一些清理(例如释放一些外部资源)。最终,我删除了指向此 Flux 的所有指针,因此它可用于垃圾回收。垃圾收集会发生什么?我的 Flux 是否收到 Cancel 信号以便执行清理?

  • 没有特定的清理机制与 GC 相关(Flux 在 GC 时不会收到取消信号)
  • 请注意,有一个名为 Flux.using 的工厂运算符,它接受资源供应商和清理回调。否则,您可以使用 doFinally 来执行清理操作
  • 在这两种情况下,这都假设 Flux 不是无限的(例如,从不调用 completeerrorFlux.create)或被取消。
  • A Flux 通常应该在订阅时初始化,所以如果没有订阅它,资源可能还没有初始化(再一次,假设它们在 Flux.create 回调中初始化,否则您的里程可能会有所不同)