小智 5
当有足够的总内存来满足请求时(通常来自进程),存在外部碎片,但是所需的总内存在连续的位置是不可用的,即它的碎片.
解决外部碎片问题:
1)压缩:将碎片化的内存混洗到一个连续的位置.
2)使用分页和分段进行虚拟内存寻址.
当动态内存分配算法分配了一些内存并且留下了一小块无法有效使用的内存时,就会发生外部碎片。如果发生过多的外部碎片,可用内存量将急剧减少。总内存空间的存在是为了满足请求,但它不是连续的。请参阅以下示例
0x0000 0x1000 0x2000
A B C //Allocated three blocks A, B, and C, of size 0x1000.
A C //Freed block B
Run Code Online (Sandbox Code Playgroud)
现在请注意,B 使用的内存不能包含在大于 B 大小的分配中