在Netty 4.1中,关闭服务器上的通道后,管道中的处理程序何时被删除?

在Netty 4.1中,关闭服务器上的通道后,管道中的处理程序何时被删除?

问题描述:

因此,我们正在生产服务器上从Netty 3.9迁移到Netty 4.1。在两个版本中,ChannelHandler在管道中的添加和删除似乎有所不同。特别是,在关闭服务器上的一个通道后,我记录了管道中某个时刻出现的ChannelHandler。在Netty 4.1中,管道有时显示很少或者没有处理程序,在Netty 3.9中,所有处理程序总是存在。所有这些在关闭通道参考后。这是预期的吗? Netty(在3.9和4.1中)何时在通道关闭后删除管道中的所有处理程序?在Netty 4.1中,关闭服务器上的通道后,管道中的处理程序何时被删除?

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

+0

谢谢诺曼。更多疑惑:这是以某种'asyc'的方式发生的吗?也许在后台线程或什么的?因为有时在关闭它们之后我仍然可以看到我的编码器和解码器只有几个通道。 Netty 3.x中不存在关闭通道后删除处理程序的机制? – gravetii

+1

是的,这可能以异步的方式发生,是的,这是不存在于3.x –