首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Netty源码解析SimpleChannelInboundHandler

Netty源码解析SimpleChannelInboundHandler

作者头像
JavaEdge
发布2021-02-22 13:36:00
发布2021-02-22 13:36:00
9720
举报
文章被收录于专栏:JavaEdgeJavaEdge

1 ChannelInboundHandlerAdapter

ChannelInboundHandlerAdapter直接操作byte数组。 ChannelInboundHandlerAdapter 好像一无是处,毕竟他要自己处理资源的释放

代码语言:javascript
复制
buf.release();

如果channelRead都是同步操作,SimpleChannelInboundHandler是不错的选择,如果操作是异步的话,那他的逻辑就有点麻烦了,例如你把数据交给另外的线程处理了,还没处理就会释放了 。这里必须说明一个问题,他的回收和jvm的垃圾回收还不完全是一回事。netty是自己做了引用计数的操作。

代码语言:javascript
复制
buf.refCnt();

通过上面的api就可以获取到计数的个数。ChannelInboundHandlerAdapter 处理自由的优点也就提现出来了,可以更好的处理更多的特定场景。

所以ChannelInboundHandlerAdapter 的好处则是更自由,在异步的场景下更适合。

2 SimpleChannelInboundHandler

  • SimpleChannelInboundHandler有泛型参数,配合decoder使用更佳。

SimpleChannelInboundHandler主要还多做了类型匹配以及用完之后释放指向保存该消息的 ByteBuf 的内存引用。

SimpleChannelInboundHandler的好处是可以处理不同的类型对象,并且可以做释放。

那么源码中可见如果对于不接受的消息类型,else分支也会释放内存吗?让我们直接看 tailContext 即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 ChannelInboundHandlerAdapter
  • 2 SimpleChannelInboundHandler
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档