写入时自动释放Buffer
如下代码:
|
|
此处在ChannelInboundHandlerAdapter中并没有释放接受到的消息,这是因为当写入的时候Netty会帮助我们释放。
(我简单的理解为:调用ctx的write方法,可以自动将我们的buffer的引用减一)
换一个角度理解ChannelFuture
一个 ChannelFuture 代表了一个还没有发生的IO操作。
预定义监听器代码
这个东西我在用,但是一直不知道它叫做预定义监听器:
|
|
ByteToMessageDecoder陷阱
关于Sharable的问题我已经了解了,但是下面还有一个小问题。
一些方法如ByteBuf.readBytes(int),如果返回的缓冲区没有被释放或者添加到out List中,将会导致内存泄漏。使用像ByteBuf.readSlice(int)这样的派生缓冲区来避免内存泄漏。
(我目前Netty的代码写的还不够多,对这个问题理解的还不够深入)