Flux 是如何被垃圾回收的?
How Fluxes are garbage collected?
假设我创建了一个 Flux。此 Flux 在创建期间已获得访问某些资源的权限,我希望在 Cancel
/Complete
上进行一些清理(例如释放一些外部资源)。最终,我删除了指向此 Flux 的所有指针,因此它可用于垃圾回收。垃圾收集会发生什么?我的 Flux 是否收到 Cancel
信号以便执行清理?
- 没有特定的清理机制与 GC 相关(
Flux
在 GC 时不会收到取消信号)
- 请注意,有一个名为
Flux.using
的工厂运算符,它接受资源供应商和清理回调。否则,您可以使用 doFinally
来执行清理操作
- 在这两种情况下,这都假设
Flux
不是无限的(例如,从不调用 complete
或 error
的 Flux.create
)或被取消。
- A
Flux
通常应该在订阅时初始化,所以如果没有订阅它,资源可能还没有初始化(再一次,假设它们在 Flux.create
回调中初始化,否则您的里程可能会有所不同)
假设我创建了一个 Flux。此 Flux 在创建期间已获得访问某些资源的权限,我希望在 Cancel
/Complete
上进行一些清理(例如释放一些外部资源)。最终,我删除了指向此 Flux 的所有指针,因此它可用于垃圾回收。垃圾收集会发生什么?我的 Flux 是否收到 Cancel
信号以便执行清理?
- 没有特定的清理机制与 GC 相关(
Flux
在 GC 时不会收到取消信号) - 请注意,有一个名为
Flux.using
的工厂运算符,它接受资源供应商和清理回调。否则,您可以使用doFinally
来执行清理操作 - 在这两种情况下,这都假设
Flux
不是无限的(例如,从不调用complete
或error
的Flux.create
)或被取消。 - A
Flux
通常应该在订阅时初始化,所以如果没有订阅它,资源可能还没有初始化(再一次,假设它们在Flux.create
回调中初始化,否则您的里程可能会有所不同)