在连续内存分配中,我们有一个 外部碎片 ,但是我们不能根据我们的要求将所有可用的可用内存小孔组合在一起创建一个大孔吗?
是的,我们可以组合分散在物理内存中且不连续的所有内存空间。因此,我们需要一种算法将所有使用的内存分配移动到内存的一侧,以便我们有一个连续的可用内存。此方法称为压缩。压缩执行效率很低,需要一些时间。此外,可以动态重新分配内存绑定。
补充瓦伦的答案:
压缩可能并不总是可能的,即如果地址绑定是静态的,则程序的地址空间无法重新定位。仅当重定位是动态的并且在执行时完成时,才能执行此操作。
另一种解决方案是增加块大小,但这是权衡。
有关块大小对碎片的影响,请参阅此内容