分箱式内存管理:MySQL Crash Course中的ptmalloc解析
需积分: 39 94 浏览量
更新于2024-08-06
收藏 1.81MB PDF 举报
"分箱式内存管理是Glibc中的ptmalloc内存管理器的一种优化策略,主要应用于MySQL等系统,以高效地管理和分配内存。在ptmalloc中,内存被分为fast bins、unsorted bin、small bins和large bins四类。这种管理方式能够减少内存碎片并提高内存分配速度。
5.2 分箱式内存管理
分箱式内存管理的核心是将不同大小的内存块分门别类地存储,以便快速找到适合的内存块进行分配。fast bins用于存储小于64字节的小内存块,是小内存块的高速缓存。当内存块被回收时,会优先放入fast bins,再次分配时直接从中取出,提高了效率。unsorted bin只有一个,所有回收的chunk首先放入此bin,分配时会检查unsorted bin,如果有合适的chunk则直接使用,否则将unsorted bin的内容归类到small bins或large bins。
5.2.1 Small bins
small bins专门用于管理固定大小的小chunk,每个bin对应一个特定的chunk大小。在32位系统上,chunk大小以8字节递增,最大为504字节,最小为16字节,共有62个bin。而在64位系统上,chunk大小以16字节递增,最大为1008字节,最小为32字节,同样也是62个bin。每个small bin内的chunk大小相同,分配内存时直接在对应的bin中寻找,避免了碎片并提升了效率。
5.2.2 Large bins
large bins用于存储大于512字节或1024字节的chunk,它们按照大小顺序排列,使用双向链表结构,分配时遵循最近匹配原则,以减少内存浪费。
5.2.3 Unsorted bin
unsorted bin作为临时存储,回收的chunk会先放入其中,分配内存时首先检查,如果没有合适的chunk,再将其内容分到small bins或large bins。
5.2.4 Fast bins
fast bins是小内存块的高速缓存,回收的小内存块会被放入fast bins,分配时优先考虑,以加速内存分配过程。
通过这种分箱式的内存管理,ptmalloc能够更有效地管理内存,提供高效的内存分配和回收服务,减少了内存碎片,优化了程序性能。在大型系统如MySQL中,这样的内存管理策略至关重要,因为它直接影响到数据库的运行效率和稳定性。"
2020-05-18 上传
1368 浏览量
5180 浏览量
1077 浏览量
1409 浏览量
柯必Da
- 粉丝: 42
- 资源: 3791
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码