17、深入理解FastMM4内存管理器:原理、优化与实践

深入理解FastMM4内存管理器:原理、优化与实践

1. FastMM4内存管理器概述

FastMM4并非单一的内存管理器,而是集三种不同的子系统于一体,分别为小内存块分配器、中等内存块分配器和大内存块分配器。各分配器的职责和管理策略如下:
| 分配器类型 | 处理内存块大小 | 管理策略 |
| — | — | — |
| 小内存块分配器 | 小于2.5KB | 共有56个小内存分配器,每个仅服务于一种大小的内存块,从8字节开始,以特定间隔递增,直至2608字节。它们从中等内存块分配器获取内存。 |
| 中等内存块分配器 | 2.5KB - 160KB | 从大内存块分配器获取内存,将大内存块切割成小内存块,并使用链表管理未使用的内存部分。 |
| 大内存块分配器 | 大于160KB | 直接通过调用Windows的 VirtualAlloc 函数获取内存,以4KB为单位分配,可能会浪费部分内存,但对程序影响不大。 |

小内存块分配器是FastMM4的核心亮点。每个内存分配请求可能会浪费一些内存,但分配器的大小经过精心选择,通常浪费的内存量低于10%。每个分配器本质上是一个由等大小元素(内存块)组成的数组,未使用的元素通过链表连接,便于快速查找空闲元素。

2. FastMM4的内存重分配优化

FastMM4在处理字符串或数组小幅度调整大小时,采用了一种巧妙的策略。当首次调整内存大小时,若为小内存块分配器,新内存块的最小大小将至少为原内存块大小的两倍加上32字节。例如,一个24字节的字符串添加一个字符后,请求将从24字节扩大到26字节,但FastMM4会将其向上取整为80字节(

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值