遇到连接到第三方服务器的OutMemoryError,它无法足够快地处理请求.
尝试使用有界队列和丢弃策略(ThreadPoolExecutor.DiscardPolicy)传递NioClientSocketChannelFactory以执行服务器,但仍然得到OutOfMemoryError.
我错过了什么?
谢谢
如果您的客户端Netty通道的写缓冲区已满,并且服务器没有足够快地读取它,您将OutOfMemoryError
在客户端看到.为了避免这种情况,你必须在Channel.isWritable()
返回时停止写作false
.channelInterestOpsChanged
当Channel.writable' changes. Then, you can check again if
Channel.isWritable()的状态为returns
真时,您将收到有关事件的通知并继续写入.
如果可以丢弃待处理的数据,我就不会Channel.write()
在Channel.isWritable()
返回时调用false
.
您可以使用Channel.writable
提供的水印属性配置属性更改的时间NioSocketChannelConfig
.另外,请查看使用此技术的'discard'示例.