自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 10.netty内存管理——PoolArena

PoolArenaPoolArena成员介绍PoolChunkListPoolChunkList实例化PoolChunkList添加PoolChunkPoolChunkList移动PoolChunkPoolChunkList申请内存PoolChunkList初始化PoolArena申请内存将申请内存规整化。申请tiny、small级别的内存申请normal级别的...

2020-02-08 08:51:46 927

原创 9.PoolSubpage

PoolSubPagePoolSubPage初始化初始化chunk等成员变量计算最大poolSubpage数量添加poolSubpage到PoolArena的双向链表中PoolSubpage分配内存找到对应PoolSubpage数组找到subpage对应的索引值初始化subpage分配subpage级别的内存初始化ByteBufPoolSubPa...

2020-01-31 19:25:35 929

原创 8.池化内存分配

netty内存管理思想PooledByteBufAllocatePoolChunkChunk初始化PoolChunk分配内存netty内存管理思想java作为一门拥有GC机制的语言,长久以来它的使用者都不必手动管理内存,这比起c/c 是一个巨大的进步。但现在netty却反其道而行之,实现了一套不依赖GC而自行管理内存的机制。那么netty为什么要这么做?众所周知n...

2020-01-19 20:56:28 1240

原创 7.netty内存管理-ByteBuf

ByteBufByteBuf是什么ByteBuf重要APIread、write、set、skipBytesmark和resetduplicate、slice、copyretain、releaseByteBuf扩容ByteBuf种类ByteBufAllocateUnPooledByteBufAllocatenewHeapBuffernewDirectBuf...

2020-01-06 22:21:03 1117

原创 6.ChannelPipeline

pipeline和handlerChannelPiplineChannelHandlerChannelHandlerContextpipeline的初始化handler的添加和删除handler的传播顺序inbount事件的传播pipeline与context调用传播方法的区别异常的传播异常的传播路径异常优雅处理pipeline和handler...

2019-12-29 22:33:25 973

原创 5.接入客户端连接

服务端发现新连接循环读取read事件将新连接交给pipeline处理收尾工作清除感兴趣事件两种Channel的类比关系感想服务端发现新连接在服务端启动过程中,ServerBootstrap通过反射的方式创建了一个NioServerSocketChannel,并且绑定了OP_ACCEPT感兴趣事件。启动之后,bossGroup中的NioEventLoop线程不断轮询...

2019-12-13 22:38:12 910

原创 4.Netty执行IO事件和非IO任务

回顾NioEventLoop的run方法流程IO事件与非IO任务处理IO事件处理非IO任务聚合定时任务到普通任务队列从普通队列中获取任务计算任务执行的超时时间安全执行计算是否超时总结回顾NioEventLoop的run方法流程上文说到NioEventLoop的run方法可以分为3个步骤:轮询channel中就绪的IO事件处理轮询出的IO事件处理...

2019-12-05 23:05:11 1327

原创 3.NioEventLoop的启动和执行

NioEventLoop启动和执行NioEventLoop启动在服务端启动的代码中,我们看到netty在注册和绑定时,判断了当前线程是否是NioEventLoop线程。如果不是,则将这些操作包装成一个任务丢到EventExecutor中来完成。// 调用SingleThreadEventExecutor对象的execute方法eventLoop.execute(() -> regi...

2019-11-27 20:54:14 1004

原创 2.NioEventLoop的创建

NioEventLoop的创建NioEventLoop是netty及其重要的组成部件,它的首要职责就是为注册在它上的channels服务,发现这些channels上发生的新连接、读写等I/O事件,然后将事件转交 channel 流水线处理。使用netty时,我们首先要做的就是创建NioEventLoopGroup,这是一组NioEventLoop的集合,类似线程与线程池。通常,服务端会创建2个g...

2019-11-20 20:13:39 902

原创 1.netty服务端的启动

服务端的创建示例代码netty源码中有一个netty-example项目,不妨以其中比较经典的EchoServer作为楔子。// 步骤1EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup();final EchoServerHan...

2019-11-17 22:33:06 937

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除