
netty
记录netty源码中的相关技术点
shuxiaohua
这个作者很懒,什么都没留下…
展开
-
Netty内存泄露侦测
概览 Netty为了提高性能,自己写了buffer模块,用于存储网络请求的数据。 Netty提供了分配和释放的函数,跟c的malloc和free一样,控制权在用户手里,如果用户用完后忘记调用release函数,会造成该块内存无法被回收,造成内存泄露。 Netty应用WeakReference(新版本修改成PhantomReference),来对内存泄露进程检测。 toLeakAwareBuffer protected ByteBuf newHeapBuffer(int initialCapacity原创 2020-10-23 11:35:50 · 680 阅读 · 1 评论 -
netty内存管理-1
netty为什么要自己管理内存 netty是一款高性能的网络编程框架,大并发量的网络应用中,需要大量分配内存在接受网络数据,这些内存比较有规律,可重用性高,如果将内存管理委托给JVM,性能会比较低。 netty内存管理设计到的技术点 内存分配算法(伙伴算法,slab分配器) 对象重用 引用计数 内存泄露检测 本篇只讲内存分配算法 ...原创 2020-07-30 20:06:25 · 178 阅读 · 0 评论 -
netty中的位运算
netty buffer模块 PoolChunk.allocateNode 如果需要分配的内存大于等于pageSize的时候,netty会采用伙伴算法,该函数是使用伙伴算法在memory chunk中找到合适的空闲内存。 PoolChunk类中的byte[] memoryMap字段,是用数组实现满二叉树,来记录memory chunk的内存使用情况。注:根节点的下标为1. memoryMap代表该节点能够分配的最大内存,每次分配内存后,被分配的节点标记为不可分配的同时,还会更新父节点的值,因为子节点的内存是原创 2020-06-20 11:34:06 · 300 阅读 · 0 评论