Java netty 4中服务器端和客户端高写水印和低写水印选项之间的差异

Java netty 4中服务器端和客户端高写水印和低写水印选项之间的差异,java,netty,Java,Netty,介绍WRITE\u BUFFER\u HIGH\u WATER\u MARK和WRITE\u BUFFER\u LOW\u WATER\u MARK选项。它还举例说明: //Server ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.childOption(ChannelOption.WRITE_BUFFER_HIGH_WATER_MARK, 32 * 1024); bootstrap.childOption(Chann

介绍
WRITE\u BUFFER\u HIGH\u WATER\u MARK
WRITE\u BUFFER\u LOW\u WATER\u MARK
选项。它还举例说明:

//Server
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.childOption(ChannelOption.WRITE_BUFFER_HIGH_WATER_MARK, 32 * 1024);
bootstrap.childOption(ChannelOption.WRITE_BUFFER_LOW_WATER_MARK, 8 * 1024);

//Client
Bootstrap bootstrap = new Bootstrap();
bootstrap.option(ChannelOption.WRITE_BUFFER_HIGH_WATER_MARK, 32 * 1024);
bootstrap.option(ChannelOption.WRITE_BUFFER_LOW_WATER_MARK, 8 * 1024);
关于StackOverflow这个主题还有另一个问题。但我还是不确定一些细节

客户端中设置的高写水印和低写水印选项是否控制从客户端写入到服务器的队列的行为,服务器端选项是否控制从服务器写入到客户端的队列的行为

这意味着,如果设置了服务器端高水位线选项,那么当客户端接收缓慢且先前写入的数据已填满队列时,将数据写入客户端的服务器端通道将变得不可写?对于客户端选项,反之亦然

顺便说一句,我使用的是netty 4.1.0CR

这意味着如果设置了服务器端高水印选项,则 将数据写入客户端的服务器端通道变为非 当客户端接收缓慢且以前写入的 数据已填满队列?对于客户端选项,反之亦然

一旦通道中的数据达到高水印,该方法开始返回false,直到通道再次达到低水印

但是,如果我们不检查/忽略状态,并在通道达到高水位线后继续写入通道,最终可能会导致OOM错误,如前两张幻灯片所示

更新

是否执行客户端中设置的高写水印和低写水印选项 控制从客户端写入服务器的队列的行为,以及 服务器端选项控制写入队列的行为 从服务器到客户端


那绝对是真的。

我知道你说的话。我想问的是服务器端和客户端服务器的选项之间的区别。@WeiboLi请参阅答案中的“我的更新”部分。