【问题标题】:In Netty 4.1, when are the handlers in the pipeline removed after closing the channel on the server?在 Netty 4.1 中,关闭服务器上的通道后,管道中的处理程序何时被移除?
【发布时间】:2017-07-04 10:03:03
【问题描述】:

因此,我们正在生产服务器上从 Netty 3.9 迁移到 Netty 4.1。在两个版本中,ChannelHandlers 从管道中添加和删除的方式似乎有所不同。具体来说,在关闭服务器上的通道后,我在某个时间点记录了管道中存在的ChannelHandlers。在 Netty 4.1 中,管道有时会显示很少或没有处理程序,而在 Netty 3.9 中,所有处理程序始终存在。所有这一切都在关闭通道参考之后。这是预期的吗?通道关闭后,Netty(3.9 和 4.1 中的)何时删除管道中的所有处理程序?

【问题讨论】:

    标签: java netty nio


    【解决方案1】:

    在 netty 4.x 中,当通道关闭时,我们会从管道中依次删除所有处理程序。这样我们还可以执行handlerRemoved(...),这可能需要释放内存等。

    【讨论】:

    • 谢谢诺曼。还有几个疑问:这是否以某种“asyc”方式发生?也许在后台线程或什么?因为有时我在关闭它们后仍然会看到我的编码器和解码器的几个频道。 Netty 3.x 中也不存在这种在关闭通道后删除处理程序的机制?
    • 是的,这可能以异步方式发生,是的,这在 3.x 中不存在
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 2015-09-11
    • 2016-03-24
    • 2019-04-25
    • 2020-05-29
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多