碎片化导致内存利用率低
内部碎片
Link to original
- 对一个给定块, 当有效荷载小于块的大小时会产生内部碎片
- 我们这个实际的数据是中间这个绿色区域,我们要在前面加上一些头或尾来标记这个整个区域的一些信息,那这个头和尾其实它是无效的,对数据来说它是无效,但是它为了标记它也是有作用
- 产生原因
- 维护数据结构产生的开销
- 增加块大小以满足对齐的约束条件
- 显式的策略决定 (比如, 返回一个大块以满足一个小的请求)
- 只取决于以前 请求的模式
- 易于量化
外部碎片
Link to original
- 是当空闲内存合计起来足够满足一个分配请求,但是没有一个独立的空闲块足够大可以来处理这个请求时发生的
- 内存块路径上的空余块不够存放新的,比如图中申请 6 块,但是空余只有五块,只能向后申请存放,路径上的 5 就浪费了
- 取决于将来请求的模式
- 难以量化

