0
我在Rx很新鲜,我似乎有可观察的缓冲区事件数据。使用cold observable
或replay
,即使很长时间后,数据流也会发送给后面的观察者。但是什么时候它会被垃圾?此外,使用Rx时应该关心内存?RxJava/Scala Observable垃圾如何使用数据?
我在Rx很新鲜,我似乎有可观察的缓冲区事件数据。使用cold observable
或replay
,即使很长时间后,数据流也会发送给后面的观察者。但是什么时候它会被垃圾?此外,使用Rx时应该关心内存?RxJava/Scala Observable垃圾如何使用数据?
垃圾收集遵循Java的正常规则:如果有一个硬引用它,它将永远存在。这意味着如果您将一个Observable分配给一个字段,则该可观察值将不符合垃圾回收的条件。如果这是replay()运算符的结果 - 或者replay()运算符在其上游 - 则replay()运算符中的所有数据也将保存在内存中。
有replay
变种,可以帮助你限制保存在内存中的引用对象,超时或计数。
您也可以使用SoftReference
来观察本身。
随着进一步的搜索,我也几乎找到这个主题的参考文献。简单地说,多少Rx风格将使用额外的内存比正常的工作流程?可以量化的Observable的用法可以计数,包含一些操作,比如map?em ...感谢您的任何建议。 – LoranceChen