Это происходит с OOM:
Flowable.range(1, 5000)
.map(__ -> new byte[1024 * 1024])
.replay(
fb ->
fb.take(1)
.concatMap(__ -> fb)
,1
)
.count()
.toFlowable()
.blockingSubscribe(c -> System.out.println("args = [" + c + "]"));
Это, я думаю, потому что replay
удерживает выбросы из восходящего потока, хотя я бы подумал, что подсказка размера буфера 1
сделает его не… что я пропустил?
Это не сбой:
Flowable.range(1, 5000)
.map(__ -> new byte[1024 * 1024])
.publish(
fb ->
fb.take(1)
.concatMap(first -> fb.startWith(first))
,1
)
.count()
.toFlowable()
.blockingSubscribe(c -> System.out.println("args = [" + c + "]"));
Но я не уверен, что мне гарантировано, что я получу ВСЕ выбросы из верхнего потока, как это ...