我需要对对象流进行异步扫描。
如果我仅凭一个(如下所示)执行此操作,它将很快耗尽内存。似乎即使我使用onTerminateDetatch,单身人士也会一直保留引用。
object Test extends App {
import io.reactivex.{ Single, Observable, functions }
def identity[T] = new functions.Function[T, T] {
override def apply(t: T): T = t
}
Observable.fromCallable[Array[Int]](() => {
Array.fill(10000000)(100)
})
.repeat()
.scanWith[Single[Array[Int]]](() => Single.just(Array.emptyIntArray), (single, a) => {
single
.map[Array[Int]](_ => a)
.cache()
.onTerminateDetach()
})
.flatMapSingle[Array[Int]](identity[Single[Array[Int]]])
.subscribe(a => println(a.length))
}
这将很快耗尽内存。