RxJava背压总结

本文总结了RxJava中的背压现象,指出当被观察者不断发送事件而观察者无法及时处理时,事件会被暂存于缓存区,需要注意防止内存溢出(OOM)。推荐阅读相关链接以深入了解。
摘要由CSDN通过智能技术生成
订阅分为:同步订阅 异步订阅

同步订阅
Rxjava1与Rxjava2中 同步订阅没有用到缓冲区,只要上游事件数量不大于请求数量不会触发 MissingBackpressureException 异常,但是这种方式在数量多了以后会出现大量的内存使用率上升,有可能导致OOM。

同步订阅,存在问题,因为不存在缓冲区,发送事件超过接收事件抛出异常。这种可以通过 FlowableEmitter类的requested()控制被观察者发送速度,就是发送前先获取到观察者能接收多少个。

异步订阅
Rxjava1中的Observable与少量的操作符采用了背压处理。但是缓冲区的大小为16,如果上游数据超过16个同时发送事件会触发MissBackPressureException。
Rxjava2中的Observalbe不在支持背压策略。但是新增了Flowable支持背压策略。

相对同步订阅存在缓冲区,多发送的事件会被存在缓冲区。事件积压超过一定数量会抛出 MissingBackpressureException

RxJava2采取了更先进的 背压策略
模式1:BackpressureStrategy.ERROR  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值