10 王伟王胖胖

尚未进行身份认证

爱折腾的老鸟

等级
TA的排名 3w+

吃透Netty源码系列三十六之CompositeByteBuf详解二

吃透Netty源码系列三十六之CompositeByteBuf详解二removeComponent删除组件getByte获取数据findComponent查找组件findIt二分查找iterator获取缓冲区迭代器isDirect是否是直接缓冲区capacity有多少可读字节deallocate释放缓冲区根据组件数量来判断的方法removeComponent删除组件前一篇讲了新增操作,接下来讲...

2020-02-25 22:26:35

吃透Netty源码系列三十五之CompositeByteBuf详解一

吃透Netty源码系列三十五之CompositeByteBuf详解CompositeByteBuf内部结构Component构造方法主要方法CompositeByteBuf重要属性CompositeByteBuf构造方法addComponent(ByteBuf buffer)addComponent0CompositeByteBuf简单来说就是各种缓冲区的组合,就是把他们封装到一个缓冲区,或者...

2020-02-25 22:26:07

吃透Netty源码系列三十四之PooledByteBuf相关补充

吃透Netty源码系列三十四之PooledByteBuf相关简介PooledByteBuf主要属性PooledHeapByteBufPooledDirectByteBufPooledUnsafeDirectByteBufPooledUnsafeHeapByteBufPooledByteBuf前面介绍了一大堆内存管理,对象池的东西,就是为了讲这个,现在再去理解容易多了。跟前面的Unpoole...

2020-02-23 22:05:37

吃透Netty源码系列三十三之Recycler细节解析二

吃透Netty源码系列三十三之Recycler细节解析二RECYCLER.get()stack.pop()Stack有对象的情况Stack没有对象的情况(后面讲)RECYCLER.get()获取对象,看看里面是怎么样实现的,我们讨论启用缓存的情况。 public final T get() { if (maxCapacityPerThread == 0) {//如果不启用,...

2020-02-22 21:31:19

吃透Netty源码系列三十二之Recycler细节解析一

吃透Netty源码系列三十二之Recycler细节解析一Recycler一些配置属性简单例子入手Recycler初始化DELAYED_RECYCLEDthreadLocalStack构造方法处理器回收recycle(this)stack.pushpushNow当前线程是Stack的所属线程dropHandlepushLater当前线程不是Stack的所属线程newWeakOrderQueue创建队...

2020-02-22 21:30:40

吃透Netty源码系列三十一之回收器Recycler预备知识

吃透Netty源码系列三十一之回收器Recycler回收器和对象池Handle接口创建对象池Recycler每个线程能独立的存取数据回收器和对象池回收器,就是来回收对象的,对象池,就是来存储对象复用的。为了跟对象池配合,使得对象池只是作为一个获取对象的实体,只要接受对象创建器即可,其他的不用管,而且将对象池如何存取的实现剥离到了回收器里,如果要改变具体存取方案,只要更换回收器即可,其实也是一种...

2020-02-22 21:29:48

吃透Netty源码系列三十之内存分配角色结构图

吃透Netty源码系列三十之内存分配角色结构图PooledByteBufAllocatorPoolThreadCachePoolSubpagePoolChunkPoolChunk的depthMap树形表示PoolChunk的memoryMap树形表示PoolChunkListPoolArenaPooledByteBufAllocatorPoolThreadCachePoolSubpage...

2020-02-20 22:16:31

吃透Netty源码系列二十九之池化内存分配总结

吃透Netty源码系列二十九之池化内存分配总结申请缓冲区创建PoolThreadLocalCache创建PoolThreadCache获取线程本地变量的PoolArena进行分配尝试用缓存来分配缓存分配失败,走正常分配流程释放缓冲区创建实体放入队列释放块防止内存泄露的措施申请缓冲区今天在来总结下内存分配中的几个主要的角色。这个就是我们用的池化内存分配器,里面会进行很多参数的配置,这些参数的默认...

2020-02-20 22:15:07

吃透Netty源码系列二十八之PoolThreadCache二

吃透Netty源码系列二十八之PoolThreadCache二PoolArena的freePoolThreadCache的addcacheMemoryRegionCache的addPoolThreadCache的trimMemoryRegionCache的trimfreefreeEntryPoolArena的freeChunkPoolChunkList的freePoolChunk的freePool...

2020-02-19 22:14:40

吃透Netty源码系列二十七之PoolThreadCache一

吃透Netty源码系列二十七之PoolThreadLocalCachePoolThreadLocalCachePoolThreadLocalCache

2020-02-19 22:14:04

吃透Netty源码系列二十六之FastThreadLocal二

吃透Netty源码系列二十六之FastThreadLocal二FastThreadLocal构造方法setsetKnownNotUnsetaddToVariablesToRemoveremoveremoveFromVariablesToRemovegetinitializegetIfExistsdestroyremoveAllFastThreadLocalThreadFastThreadLoca...

2020-02-18 22:54:46

吃透Netty源码系列二十五之FastThreadLocal一

吃透Netty源码系列二十五之池化内存分配六PoolChunk的initBufPoolChunk的initBuf

2020-02-18 22:54:08

吃透Netty源码系列二十四之池化内存分配五

吃透Netty源码系列二十四之池化内存分配五PoolChunk的initBufPoolChunk的initBuf上一篇我们讲到子页的内存分配,讲到了我们获取了handle,今天将获取之后做什么。我们可以看到子页分配的都是那么大的数,原因上篇已经讲过了。后面会有获取nioBuffer,就是在...

2020-02-17 21:19:43

吃透Netty源码系列二十三之池化内存分配四

吃透Netty源码系列二十三之池化内存分配四PoolSubpage的allocategetNextAvailfindNextAvailfindNextAvail0removeFromPooltoHandle重点以及为什么要加上0x4000000000000000LPoolSubpage的allocate继续上一篇的,现在执行到subpage.allocate(),里面才是对子页可分配的内存做了...

2020-02-17 21:19:07

吃透Netty源码系列二十二之池化内存分配三

吃透Netty源码系列二十二之池化内存分配三PoolChunk的allocateSubpagePoolChunk的allocateSubpage

2020-02-16 22:48:23

吃透Netty源码系列二十一之池化内存分配二

吃透Netty源码系列二十一之池化内存分配二PoolChunk的newChunkPoolChunk的一些属性PoolChunk构造方法newSubpageArray创建化子页数组allocate分配空间allocateRun大于页大小的分配,即Normal类型log2高效的取出2的次数深度d到底怎么算的allocateNodesetValueupdateParentsAllocrunLength...

2020-02-16 22:46:38

吃透Netty源码系列二十之池化内存分配一

吃透Netty源码系列二十之创建PoolArena简介PoolArena构造函数位运算细节1位运算细节2newSubpagePoolArraynewSubpagePoolHead(int pageSize)按chunk的内存使用率进行分组PoolArena构造函数上篇讲到在PooledByteBufAllocator最终的构造函数中,有创建PoolArena:我们先看看他的一些变量,后面会...

2020-02-16 22:46:05

吃透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

吃透Netty源码系列十八之PooledByteBuf预备知识jemalloc简介

吃透Netty源码系列十八之PooledByteBuf预备知识jemallocjemalloc内存分配算法简介解决的问题更加细粒度的分配jemalloc内存分配算法简介为什么要讲这个呢,因为netty的池化内存分配就是这个的改进版,要想更好的了解改进版,当然要先知道他的原版是怎么样的啦,要知道为什么他要用这个分配算法,能解决什么问题。首先这个是一篇论文里提出来的构想,还有他的源码[github...

2020-02-13 23:21:04

吃透Netty源码系列十七之UnpooledDirectByteBuf

吃透Netty源码系列十七之UnpooledDirectByteBufUnpooledDirectByteBufCLEANERCleanerJava6freeDirectBufferCleanerJava9freeDirectBufferUnsafe的invokeCleaner设置和获取ByteBufUtilUnpooledUnsafeDirectByteBufUnpooledUnsafeNoCl...

2020-02-11 22:39:19

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。