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