碎片化导致内存利用率低

内部碎片

  • 对一个给定块, 当有效荷载小于块的大小时会产生内部碎片
    • 我们这个实际的数据是中间这个绿色区域,我们要在前面加上一些头或尾来标记这个整个区域的一些信息,那这个头和尾其实它是无效的,对数据来说它是无效,但是它为了标记它也是有作用
  • 产生原因
    • 维护数据结构产生的开销
    • 增加块大小以满足对齐的约束条件
    • 显式的策略决定 (比如, 返回一个大块以满足一个小的请求)
  • 只取决于以前 请求的模式
    • 易于量化
Link to original

外部碎片

  • 是当空闲内存合计起来足够满足一个分配请求,但是没有一个独立的空闲块足够大可以来处理这个请求时发生的
    • 内存块路径上的空余块不够存放新的,比如图中申请 6 块,但是空余只有五块,只能向后申请存放,路径上的 5 就浪费了
  • 取决于将来请求的模式
    • 难以量化
Link to original