我正在开发一个服务器应用程序,通过使用Netty将数据流传输到客户端。基本上,有一个主服务器向我的应用程序提供数据,应用程序将数据分发给注册用户。由于我的应用程序需要长期维护,Netty 3.5.8和Netty 4.0.0在API方面有很大不同,所以我决定使用Netty 4.0.0
然而,我遇到的问题是,当主服务器提供过多的数据时,无法足够快地分发给客户端。堆内存使用量增加并导致内存不足,因此我尝试在写入数据之前检查客户端的缓冲区以防止此问题。我在网站上使用discard示例(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中将其写入之前检查缓冲区?
提前致谢。
答案 0 :(得分:0)
我有类似的问题。我处理这个的方式是:
始终遵循相同的模式。它可能会减慢一些速度,但会防止内存不足错误。缓慢不应该引起关注,因为如果你担心的话,你的应用程序架构(netty之外)已经有一个需要解决的用例。