我在Rx新鲜,我似乎有Observable缓冲事件数据。使用cold observable
或replay
,即使很久以后,数据流也会向后来的观察者发射。但是什么时候会被打扮?另外,使用Rx时应该注意什么?
答案 0 :(得分:1)
垃圾收集遵循Java的常规规则:如果有一个硬引用,它将永远存在。这意味着如果您将Observable分配给某个字段,则该observable将不符合垃圾回收的条件。如果这是replay()运算符的结果 - 或者如果replay()运算符在它的上游 - 那么replay()运算符中的所有数据也保存在内存中。
有replay
个变种可以帮助您限制在超时或计数时保留在内存中的引用对象。
您也可以使用SoftReference
来观察自己。