直接回答:内存碎片指空闲内存总量足够、却无法满足分配请求的现象。外部碎片:空闲空间被已分配块切割成许多不连续的小块,没有一块够大(常见于段式分配和堆的反复 malloc/free)。内部碎片:分配给进程的块比实际需要的大,多余部分被浪费(如分页按固定页大小分配,最后一页通常用不满)。

展开解析:减少碎片的手段:分页机制用固定大小的页框消灭外部碎片(代价是引入内部碎片,每进程平均浪费半页);伙伴系统(Linux 物理页分配器)把空闲块按 2 的幂组织,分配时分裂、释放时合并,抑制外部碎片;slab/slub 分配器为常用小对象建专用缓存,避免频繁切分通用堆;用户态可用内存池、对象池固定块大小;紧凑(compaction)移动已分配块聚拢空闲区,但需要能更新指针(Java GC 的标记-整理就是此思路)。追问方向:内部与外部碎片为何不可兼得、伙伴系统的合并条件、jemalloc/tcmalloc 用 size class 降低碎片的思路。