
吃透Netty源码系列
吃透Netty源码系列
王伟王胖胖
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
吃透Netty源码系列二十四之池化内存分配五
吃透Netty源码系列二十四之池化内存分配五PoolChunk的initBufPoolChunk的initBuf上一篇我们讲到子页的内存分配,讲到了我们获取了handle,今天将获取之后做什么。我们可以看到子页分配的都是那么大的数,原因上篇已经讲过了。后面会有获取nioBuffer,就是在...原创 2020-02-17 21:19:43 · 840 阅读 · 0 评论 -
吃透Netty源码系列二十三之池化内存分配四
吃透Netty源码系列二十三之池化内存分配四PoolSubpage的allocategetNextAvailfindNextAvailfindNextAvail0removeFromPooltoHandle重点以及为什么要加上0x4000000000000000LPoolSubpage的allocate继续上一篇的,现在执行到subpage.allocate(),里面才是对子页可分配的内存做了...原创 2020-02-17 21:19:07 · 1260 阅读 · 0 评论 -
吃透Netty源码系列二十二之池化内存分配三
吃透Netty源码系列二十二之池化内存分配三PoolChunk的allocateSubpagePoolChunk的allocateSubpage原创 2020-02-16 22:48:23 · 865 阅读 · 4 评论 -
吃透Netty源码系列二十一之池化内存分配二
吃透Netty源码系列二十一之池化内存分配二PoolChunk的newChunkPoolChunk的一些属性PoolChunk构造方法newSubpageArray创建化子页数组allocate分配空间allocateRun大于页大小的分配,即Normal类型log2高效的取出2的次数深度d到底怎么算的allocateNodesetValueupdateParentsAllocrunLength...原创 2020-02-16 22:46:38 · 1116 阅读 · 0 评论 -
吃透Netty源码系列二十之池化内存分配一
吃透Netty源码系列二十之创建PoolArena简介PoolArena构造函数位运算细节1位运算细节2newSubpagePoolArraynewSubpagePoolHead(int pageSize)按chunk的内存使用率进行分组PoolArena构造函数上篇讲到在PooledByteBufAllocator最终的构造函数中,有创建PoolArena:我们先看看他的一些变量,后面会...原创 2020-02-16 22:46:05 · 1573 阅读 · 2 评论 -
吃透Netty源码系列十九之池化内存分配预备知识
吃透Netty源码系列十九之PooledByteBufAllocator介绍前言PooledByteBufAllocatorArena区域Chunk块Page页内存规格分类TinySmallNormalHuge图示主要变量主要变量初始化DEFAULT_PAGE_SIZE(io.netty.allocator.pageSize)DEFAULT_MAX_ORDER(io.netty.allocator...原创 2020-02-15 22:46:53 · 1699 阅读 · 1 评论 -
吃透Netty源码系列十八之PooledByteBuf预备知识jemalloc简介
吃透Netty源码系列十八之PooledByteBuf预备知识jemallocjemalloc内存分配算法简介解决的问题更加细粒度的分配jemalloc内存分配算法简介为什么要讲这个呢,因为netty的池化内存分配就是这个的改进版,要想更好的了解改进版,当然要先知道他的原版是怎么样的啦,要知道为什么他要用这个分配算法,能解决什么问题。首先这个是一篇论文里提出来的构想,还有他的源码[github...原创 2020-02-13 23:21:04 · 1129 阅读 · 2 评论 -
吃透Netty源码系列十七之UnpooledDirectByteBuf
吃透Netty源码系列十七之UnpooledDirectByteBufUnpooledDirectByteBufCLEANERCleanerJava6freeDirectBufferCleanerJava9freeDirectBufferUnsafe的invokeCleaner设置和获取ByteBufUtilUnpooledUnsafeDirectByteBufUnpooledUnsafeNoCl...原创 2020-02-11 22:39:19 · 2974 阅读 · 3 评论 -
吃透Netty源码系列十六之UnpooledHeapByteBuf
吃透Netty源码系列十六之ByteBuf系列二ByteBuf简单介绍ByteBuf简单介绍原创 2020-02-11 22:38:50 · 1915 阅读 · 3 评论 -
吃透Netty源码系列十四之DirectByteBuffer分配释放原理
吃透Netty源码系列十三之DirectByteBuffer分配释放原理简单介绍简单的例子DirectByteBuffer内存页对齐Bits.reserveMemoryBits.tryReserveMemoryUNSAFE.allocateMemoryDeallocatorUNSAFE.freeMemoryCleaner构造函数clean总结简单介绍Netty里的直接缓冲区其实是用了NIO的D...原创 2020-02-10 22:01:58 · 2864 阅读 · 5 评论 -
吃透Netty源码系列十五之ByteBuf和引用计数
吃透Netty源码系列十三之ByteBuf详解简单介绍一些特定的操作discardReadBytesclearByteBufAllocator简单介绍一个接口,但是有很多方法,可以理解成一个缓冲区数组,有一些操作的索引,比如读索引readerIndex表示从这个索引开始读,写索引writerIndex表示从这个索引开始写,还有缓冲区容量capacity等等。先看下类结构:有一个引用计数的接...原创 2020-02-10 21:59:51 · 2322 阅读 · 4 评论 -
吃透Netty源码系列十三之ChannelOutboundBuffer详解
吃透Netty源码系列十三之ChannelOutboundBuffer详解简单介绍内部类Entry重要属性decrementPendingOutboundBytessetWritablefireChannelWritabilityChangedtotalcurrentcurrentProgressprogresssizeclearNioBuffersremoveEntryremoveremove(...原创 2020-02-06 22:32:01 · 2006 阅读 · 0 评论 -
吃透Netty源码系列十二之NioSocketChannelUnsafe详细介绍
吃透Netty源码系列十二之管道NioSocketChannelUnsafe详细介绍简单介绍write(Object msg, ChannelPromise promise)filterOutboundMessage(Object msg)AbstractNioChannel的newDirectBuffer(ByteBuf buf)ChannelOutboundBuffer的addMessageC...原创 2020-02-05 21:55:46 · 1072 阅读 · 2 评论 -
吃透Netty源码系列十一之管道DefaultChannelPipeline详细介绍三
吃透Netty源码系列十一之管道DefaultChannelPipeline详细介绍三TailContext的作用出站操作AbstractChannelHandlerContext的write(Object msg)AbstractChannelHandlerContext的invokeWrite0HeadContext的writeAbstractChannelHandlerContext的flu...原创 2020-02-05 21:55:18 · 1537 阅读 · 0 评论 -
吃透Netty源码系列十之管道DefaultChannelPipeline详细介绍二
吃透Netty源码系列十之管道DefaultChannelPipeline详细介绍二HeadContext的作用构造方法channelRegisteredchannelUnregisteredchannelActivereadIfIsAutoReadchannelReadCompleteHeadContext的作用我们继续上一篇,我们知道,在管道的头尾是不一样的处理器上下文和处理器,他们都集中...原创 2020-02-04 22:37:18 · 1681 阅读 · 2 评论 -
吃透Netty源码系列九之管道DefaultChannelPipeline详细介绍一
吃透Netty源码系列九之管道DefaultChannelPipeline详细介绍一一些重要属性构造方法一些常见的方法创建通道上下文头添加处理器addFirstaddFirst0添加到双向链表中callHandlerCallbackLater延迟触发HandlerAddedcallHandlerAddedInEventLoop添加触发HandlerAdded任务callHandlerAdded0触...原创 2020-02-04 22:36:57 · 1955 阅读 · 0 评论 -
吃透Netty源码系列八之管道ChannelPipeline
图解Netty源码系列八之管道ChannelPipelineworker组注册NioSocketChannelworker组注册NioSocketChannel原创 2020-02-03 21:27:30 · 1548 阅读 · 0 评论 -
吃透Netty源码系列七之worker组注册NioSocketChannel
图解Netty源码系列七worker组注册NioSocketChannel读取消息doReadByteswriteBytessetBytesinternalNioBuffer_internalNioBufferallocHandle.lastBytesRead(doReadBytes(byteBuf))pipeline.fireChannelRead(byteBuf)总结worker组注册Nio...原创 2020-02-03 21:27:10 · 1013 阅读 · 0 评论 -
吃透Netty源码系列六之ServerBootstrapAcceptor分发
其实内部还是调用了selector.select(),这个selector已经被包装成SelectedSelectionKeySetSelector也是继承了Selector抽象类的 private int select(long deadlineNanos) throws IOException { if (deadlineNanos == NONE) { ...原创 2020-02-03 21:26:40 · 1891 阅读 · 15 评论 -
吃透Netty源码系列五之runAllTasks细节
图解Netty源码系列五新启动的线程的作用执行NioEventLoop的run方法NioEventLoop. select()NioEventLoop. processSelectedKeys()NioEventLoop. runAllTasks(long timeoutNanos)新启动的线程的作用执行NioEventLoop的run方法NioEventLoop. select()其实内...原创 2020-01-22 21:40:35 · 2242 阅读 · 4 评论 -
吃透Netty源码系列四之NioEventLoop
Netty源码深度解析系列四向bossGroup里注册通道doBind0NioEventLoop. run()NioEventLoop. select()NioEventLoop. processSelectedKeys()NioEventLoop. runAllTasks(long timeoutNanos)任务一通道注册register0doRegister处理器的回调ChannelIniti...原创 2020-01-21 22:08:38 · 1861 阅读 · 5 评论 -
吃透Netty源码系列三之bossGroup注册通道
Netty源码深度解析系列三向bossGroup里注册通道向bossGroup里注册通道我们接着上篇继续,接下去就是注册通道了ChannelFuture regFuture = config().group().register(channel);: @Override public ChannelFuture register(Channel channel) { ...原创 2020-01-21 22:07:39 · 1796 阅读 · 3 评论 -
吃透Netty源码系列二之ServerBootstrap
Netty源码深度解析系列二启动器ServerBootstrap关键的binddoBind通道的创建和初始化initAndRegister实例化NioServerSocketChannelDefaultChannelPipeline初始化通道init(channel)关键点addLast创建`ChannelHandlerContext`实例newContext不是增加到尾部的addLast0启动...原创 2020-01-21 22:07:15 · 1902 阅读 · 0 评论 -
吃透Netty源码系列一之NioEventLoopGroup
Netty源码深度解析系列一前言Netty的Reactor模式前言netty更新的是快,最新发布版本已经是4.1.45.Final了,以前有学过netty,觉得学的还不够深入,这次打算从源码级别去更加深入的理解内部机制。我不想介绍太多关于netty是什么,怎么用,我更想介绍一下原理,这样才能更好的去使用它,扩展它,完善它。我打算从常用的一些类开始介绍,比如NioEventLoopGroup S...原创 2020-01-21 22:05:52 · 5526 阅读 · 6 评论