news 2026/6/25 22:28:55

【Netty源码解读和权威指南】第58篇:PoolSubpage源码解析——小内存分配的精妙设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Netty源码解读和权威指南】第58篇:PoolSubpage源码解析——小内存分配的精妙设计

上一篇【第57篇】PoolChunk内存分配源码全解析——buddy算法的工程实现
下一篇【第59篇】RecvByteBufAllocator源码解析——动态调整接收缓冲区


一、Subpage规格

一次Page(8KB)可按规格切割: 规格16B → 512块 (8KB/16B) 规格32B → 256块 规格64B → 128块 规格128B → 64块 规格256B → 32块 规格512B → 16块 规格1KB → 8块 规格2KB → 4块 规格4KB → 2块

二、bitmap分配

finalclassPoolSubpage<T>{finallong[]bitmap;// 位图,每个bit代表一块longallocate(){intbitmapIdx=getNextAvail();// 找第一个0的bitintq=bitmapIdx>>>6;// bitmap[?]intr=bitmapIdx&63;// 第几位bitmap[q]|=1L<<r;// 标记为1(已分配)returntoHandle(bitmapIdx);}booleanfree(intbitmapIdx){intq=bitmapIdx>>>6;intr=bitmapIdx&63;bitmap[q]&=~(1L<<r);// 标记为0(释放)numAvail++;returnnumAvail==maxNumElems;// 全部释放则返回true}}

示意图

bitmap[0](64位):[1][0][1][0][0]...[0] ↑ ↑ 已分配 空闲 → 分配这个

三、双向链表管理

// PoolArena中维护Subpage链表(按规格)PoolSubpage<T>[]tinySubpagePools;// tiny规格(<512B)PoolSubpage<T>[]smallSubpagePools;// small规格(512B~8KB)// Subpage通过prev/next组成双向链表finalclassPoolSubpage<T>{PoolSubpage<T>prev;PoolSubpage<T>next;voidaddToPool(){prev=head;next=head.next;head.next=this;next.prev=this;}}

四、分配流程

请求分配256字节 ↓ 查PoolThreadCache (tiny/small缓存) ↓ miss 查Arena.tinySubpagePools/smallSubpagePools ↓ 找到对应规格的Subpage链表 查Subpage.bitmap → 找空闲位 ↓ 分配成功 ✓ ↓ 无空闲Subpage → 从Chunk分配新Page → 初始化为Subpage

五、总结

组件说明
bitmap用位图管理小块分配
规格16B~4KB共12种规格
双向链表同规格Subpage链接在一起
ThreadLocal缓存优先从线程缓存获取

上一篇【第57篇】PoolChunk内存分配源码全解析——buddy算法的工程实现
下一篇【第59篇】RecvByteBufAllocator源码解析——动态调整接收缓冲区


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/25 22:28:40

ARM Cortex-M与Kinetis MCU:物联网边缘计算与实时控制选型实战指南

1. 项目概述&#xff1a;为什么是ARM Cortex-M与Kinetis&#xff1f;在嵌入式开发领域&#xff0c;尤其是物联网和工业控制的前沿&#xff0c;选型往往是项目成败的第一步。过去几年&#xff0c;我经手过不少项目&#xff0c;从简单的智能开关到复杂的产线机器人控制器&#xf…

作者头像 李华
网站建设 2026/6/25 22:28:18

每日一个开源项目(第141篇):hiring-agent - HackerRank 开源了他们的简历评分系统,你的简历能得几分?

引言 “HackerRank 把他们的内部招聘系统开源了——这意味着你现在可以用招聘方的视角来审查自己的简历。” 这是"每日一个开源项目"系列的第141篇文章。今天的主角是 hiring-agent——HackerRank/InterviewStreet 开源的简历评分流水线。 先说最重要的一点。 这个…

作者头像 李华
网站建设 2026/6/25 22:26:11

2026年小程序开发哪家好?适合中小商家的平台选择指南

2026年小程序开发哪家好&#xff1f;适合中小商家的平台选择指南小程序开发哪家好&#xff0c;不能只看谁名气大&#xff0c;也不能只问“最低多少钱”。对中小商家来说&#xff0c;真正要看的通常是四件事&#xff1a;能不能快速上线、后台会不会太复杂、后期维护贵不贵、功能…

作者头像 李华
网站建设 2026/6/25 22:23:16

LoRA微调实战:在笔记本上高效微调大模型的完整指南

1. 为什么普通人现在真能用笔记本微调大模型——LoRA不是魔法&#xff0c;是精巧的工程妥协“Master LoRA&#xff1a;Fine-Tune Giant AI Models on Your Laptop&#xff08;完整指南&#xff09;”这个标题里藏着一个被过度简化但又极其关键的事实&#xff1a;它没说“训练”…

作者头像 李华