如何在不耗尽内存的情况下在rxjava2中缓存单个结果?

时间:2019-05-17 19:17:43

标签: java scala rx-java2 vert.x

我需要对对象流进行异步扫描。

如果我仅凭一个(如下所示)执行此操作,它将很快耗尽内存。似乎即使我使用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))
}

这将很快耗尽内存。

0 个答案:

没有答案