Netty源码解析SimpleChannelInboundHandler

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: Netty源码解析SimpleChannelInboundHandler

image.png

1 ChannelInboundHandlerAdapter

image.png

ChannelInboundHandlerAdapter直接操作byte数组。

ChannelInboundHandlerAdapter 好像一无是处,毕竟他要自己处理资源的释放

buf.release();

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

buf.refCnt();

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


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

2 SimpleChannelInboundHandler

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

image.png

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

image.png

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


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

image.png


/

目录
相关文章
|
13天前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
1天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
|
20天前
|
测试技术 Python
python自动化测试中装饰器@ddt与@data源码深入解析
综上所述,使用 `@ddt`和 `@data`可以大大简化写作测试用例的过程,让我们能专注于测试逻辑的本身,而无需编写重复的测试方法。通过讲解了 `@ddt`和 `@data`源码的关键部分,我们可以更深入地理解其背后的工作原理。
18 1
|
1月前
|
开发者 Python
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!
62 1
|
1月前
|
开发者 Python
深入解析Python `requests`库源码,揭开HTTP请求的神秘面纱!
深入解析Python `requests`库源码,揭开HTTP请求的神秘面纱!
108 1
|
11天前
|
网络协议 C# 开发者
WPF与Socket编程的完美邂逅:打造流畅网络通信体验——从客户端到服务器端,手把手教你实现基于Socket的实时数据交换
【8月更文挑战第31天】网络通信在现代应用中至关重要,Socket编程作为其实现基础,即便在主要用于桌面应用的Windows Presentation Foundation(WPF)中也发挥着重要作用。本文通过最佳实践,详细介绍如何在WPF应用中利用Socket实现网络通信,包括创建WPF项目、设计用户界面、实现Socket通信逻辑及搭建简单服务器端的全过程。具体步骤涵盖从UI设计到前后端交互的各个环节,并附有详尽示例代码,助力WPF开发者掌握这一关键技术,拓展应用程序的功能与实用性。
31 0
|
18天前
|
存储 网络协议 Java
【Netty 神奇之旅】Java NIO 基础全解析:从零开始玩转高效网络编程!
【8月更文挑战第24天】本文介绍了Java NIO,一种非阻塞I/O模型,极大提升了Java应用程序在网络通信中的性能。核心组件包括Buffer、Channel、Selector和SocketChannel。通过示例代码展示了如何使用Java NIO进行服务器与客户端通信。此外,还介绍了基于Java NIO的高性能网络框架Netty,以及如何用Netty构建TCP服务器和客户端。熟悉这些技术和概念对于开发高并发网络应用至关重要。
38 0
|
26天前
|
算法 安全 Java
深入解析Java多线程:源码级别的分析与实践
深入解析Java多线程:源码级别的分析与实践
|
架构师
阿里P8架构师教你Netty源码面试解析实战(二)- 基本组件(下)
阿里P8架构师教你Netty源码面试解析实战(二)- 基本组件
109 1
阿里P8架构师教你Netty源码面试解析实战(二)- 基本组件(下)
Netty业务代码执行流程源码解析
Netty业务代码执行流程源码解析
125 0
Netty业务代码执行流程源码解析

热门文章

最新文章

推荐镜像

更多