草庐IT

抓到 Netty 一个隐藏很深的内存泄露 Bug | 详解 Recycler 对象池的精妙设计与实现

欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文本系列Netty源码解析文章基于4.1.56.Final版本最近在ReviewNetty代码的时候,不小心用我的肉眼抓到了一个隐藏很深很深的内存泄露Bug。于是笔者将这个故事....哦不.....事故,详细的阐述出来分享给大家。这将是一篇很长很长的故事,在本文中笔者会详细描述这个内存泄露Bug的发现,分析,修复过程。顺便将对象池在Netty中的一些精妙的设计方案及其源码实现一起详尽地展现给大家。故事从何说起呢?让我们回到另一个月黑风高天空还是显得那么深邃遥远的夜晚,笔者再一次闲来无事捧起Netty对象

Netty 如何高效接收网络数据?一文聊透 ByteBuffer 动态自适应扩缩容机制

本系列Netty源码解析文章基于4.1.56.Final版本,公众号:bin的技术小屋,大家如果看到图片显示不了的话,可以查看公众号原文前文回顾在前边的系列文章中,我们从内核如何收发网络数据开始以一个C10K的问题作为主线详细从内核角度阐述了网络IO模型的演变,最终在此基础上引出了Netty的网络IO模型如下图所示:详细内容可回看《从内核角度看IO模型的演变》后续我们又围绕着Netty的主从Reactor网络IO线程模型,在《Reactor模型在Netty中的实现》一文中详细阐述了Netty的主从Reactor模型的创建,以及介绍了Reactor模型的关键组件。搭建了Netty的核心骨架如下图

Netty 如何高效接收网络数据?一文聊透 ByteBuffer 动态自适应扩缩容机制

本系列Netty源码解析文章基于4.1.56.Final版本,公众号:bin的技术小屋,大家如果看到图片显示不了的话,可以查看公众号原文前文回顾在前边的系列文章中,我们从内核如何收发网络数据开始以一个C10K的问题作为主线详细从内核角度阐述了网络IO模型的演变,最终在此基础上引出了Netty的网络IO模型如下图所示:详细内容可回看《从内核角度看IO模型的演变》后续我们又围绕着Netty的主从Reactor网络IO线程模型,在《Reactor模型在Netty中的实现》一文中详细阐述了Netty的主从Reactor模型的创建,以及介绍了Reactor模型的关键组件。搭建了Netty的核心骨架如下图

抓到 Netty 一个 Bug,顺带来透彻地聊一下 Netty 是如何高效接收网络连接的

本系列Netty源码解析文章基于4.1.56.Final版本,大家如果看到图片显示不了的话,可以查看公众号原文对于一个高性能网络通讯框架来说,最最重要也是最核心的工作就是如何高效的接收客户端连接,这就好比我们开了一个饭店,那么迎接客人就是饭店最重要的工作,我们要先把客人迎接进来,不能让客人一看人多就走掉,只要客人进来了,哪怕菜做的慢一点也没关系。本文笔者就来为大家介绍下netty这块最核心的内容,看看netty是如何高效的接收客户端连接的。下图为笔者在一个月黑风高天空显得那么深邃遥远的夜晚,闲来无事,于是捧起Netty关于如何接收连接这部分源码细细品读的时候,意外的发现了一个影响Netty接收

抓到 Netty 一个 Bug,顺带来透彻地聊一下 Netty 是如何高效接收网络连接的

本系列Netty源码解析文章基于4.1.56.Final版本,大家如果看到图片显示不了的话,可以查看公众号原文对于一个高性能网络通讯框架来说,最最重要也是最核心的工作就是如何高效的接收客户端连接,这就好比我们开了一个饭店,那么迎接客人就是饭店最重要的工作,我们要先把客人迎接进来,不能让客人一看人多就走掉,只要客人进来了,哪怕菜做的慢一点也没关系。本文笔者就来为大家介绍下netty这块最核心的内容,看看netty是如何高效的接收客户端连接的。下图为笔者在一个月黑风高天空显得那么深邃遥远的夜晚,闲来无事,于是捧起Netty关于如何接收连接这部分源码细细品读的时候,意外的发现了一个影响Netty接收

详细图解 Netty Reactor 启动全流程 | 万字长文 | 多图预警

本系列Netty源码解析文章基于4.1.56.Final版本大家第一眼看到这幅流程图,是不是脑瓜子嗡嗡的呢?大家先不要惊慌,问题不大,本文笔者的目的就是要让大家清晰的理解这幅流程图,从而深刻的理解NettyReactor的启动全流程,包括其中涉及到的各种代码设计实现细节。在上篇文章《聊聊Netty那些事儿之Reactor在Netty中的实现(创建篇)》中我们详细介绍了Netty服务端核心引擎组件主从Reactor组模型NioEventLoopGroup以及Reactor模型NioEventLoop的创建过程。最终我们得到了nettyReactor模型的运行骨架如下:现在Netty服务端程序的骨

详细图解 Netty Reactor 启动全流程 | 万字长文 | 多图预警

本系列Netty源码解析文章基于4.1.56.Final版本大家第一眼看到这幅流程图,是不是脑瓜子嗡嗡的呢?大家先不要惊慌,问题不大,本文笔者的目的就是要让大家清晰的理解这幅流程图,从而深刻的理解NettyReactor的启动全流程,包括其中涉及到的各种代码设计实现细节。在上篇文章《聊聊Netty那些事儿之Reactor在Netty中的实现(创建篇)》中我们详细介绍了Netty服务端核心引擎组件主从Reactor组模型NioEventLoopGroup以及Reactor模型NioEventLoop的创建过程。最终我们得到了nettyReactor模型的运行骨架如下:现在Netty服务端程序的骨

一文聊透 Netty 核心引擎 Reactor 的运转架构

本系列Netty源码解析文章基于4.1.56.Final版本本文笔者来为大家介绍下Netty的核心引擎Reactor的运转架构,希望通过本文的介绍能够让大家对Reactor是如何驱动着整个Netty框架的运转有一个全面的认识。也为我们后续进一步介绍Netty关于处理网络请求的整个生命周期的相关内容做一个前置知识的铺垫,方便大家后续理解。那么在开始本文正式的内容之前,笔者先来带着大家回顾下前边文章介绍的关于Netty整个框架如何搭建的相关内容,没有看过笔者前边几篇文章的读者朋友也没关系,这些并不会影响到本文的阅读,只不过涉及到相关细节的部分,大家可以在回看下。前文回顾在《聊聊Netty那些事儿之

一文聊透 Netty 核心引擎 Reactor 的运转架构

本系列Netty源码解析文章基于4.1.56.Final版本本文笔者来为大家介绍下Netty的核心引擎Reactor的运转架构,希望通过本文的介绍能够让大家对Reactor是如何驱动着整个Netty框架的运转有一个全面的认识。也为我们后续进一步介绍Netty关于处理网络请求的整个生命周期的相关内容做一个前置知识的铺垫,方便大家后续理解。那么在开始本文正式的内容之前,笔者先来带着大家回顾下前边文章介绍的关于Netty整个框架如何搭建的相关内容,没有看过笔者前边几篇文章的读者朋友也没关系,这些并不会影响到本文的阅读,只不过涉及到相关细节的部分,大家可以在回看下。前文回顾在《聊聊Netty那些事儿之

聊聊Netty那些事儿之从内核角度看IO模型

从今天开始我们来聊聊Netty的那些事儿,我们都知道Netty是一个高性能异步事件驱动的网络框架。它的设计异常优雅简洁,扩展性高,稳定性强。拥有非常详细完整的用户文档。同时内置了很多非常有用的模块基本上做到了开箱即用,用户只需要编写短短几行代码,就可以快速构建出一个具有高吞吐,低延时,更少的资源消耗,高性能(非必要的内存拷贝最小化)等特征的高并发网络应用程序。本文我们来探讨下支持Netty具有高吞吐,低延时特征的基石----netty的网络IO模型。由Netty的网络IO模型开始,我们来正式揭开本系列Netty源码解析的序幕:网络包接收流程当网络数据帧通过网络传输到达网卡时,网卡会将网络数据帧