在Netty 4.0.0.Alpha中防止内存不足错误

在Netty 4.0.0.Alpha中防止内存不足错误,netty,Netty,我正在开发一个服务器应用程序,使用Netty将数据流传输到客户端。基本上,有一个主服务器向我的应用程序提供数据,应用程序将数据分发给注册用户。由于我的应用程序需要长期维护,Netty 3.5.8和Netty 4.0.0在API方面有很大不同,因此我决定使用Netty 4.0.0 但是,我遇到了这样一个问题:当主服务器提供太多数据时,这些数据无法足够快地分发到客户端。堆内存使用量增加并导致内存不足,所以我尝试在写入数据之前检查客户端的缓冲区,以防止出现此问题。我在网站中使用了弃置示例(http:/

我正在开发一个服务器应用程序,使用Netty将数据流传输到客户端。基本上,有一个主服务器向我的应用程序提供数据,应用程序将数据分发给注册用户。由于我的应用程序需要长期维护,Netty 3.5.8和Netty 4.0.0在API方面有很大不同,因此我决定使用Netty 4.0.0

但是,我遇到了这样一个问题:当主服务器提供太多数据时,这些数据无法足够快地分发到客户端。堆内存使用量增加并导致内存不足,所以我尝试在写入数据之前检查客户端的缓冲区,以防止出现此问题。我在网站中使用了弃置示例(http://static.netty.io/4.0/xref/io/netty/example/discard/package-summary.html)但它不起作用,因为有时在调用侦听器之前堆内存已满。我在Netty 3.5.8中查看了这个示例,发现该示例在写入数据之前检查了实际缓冲区。它与4.0.0中的示例不同,因此,在将缓冲区写入netty 4.0.0之前,我们是否有办法检查缓冲区


提前谢谢。

我也有类似的问题。我处理这件事的方式是:

  • 当服务器写入数据时,同步调用写入第64k字节的调用。因此,在数据被另一端使用之前,呼叫会被阻塞
  • 另一端不会使用数据,直到它已经使用的数据被处理并丢弃 始终遵循相同的模式。它可能会减慢速度,但会防止内存不足错误。速度慢不应该引起关注,因为如果需要关注的话,您的应用程序架构(netty之外)中已经有一个需要解决的用例