【c++】【Linux】内存碎片
内碎片
分配给进程未被使用的部分
当内存被分配给某个进程时,分配的内存块可能比实际需求稍大,未被使用的部分称为内碎片。
例如,
如果需要3.6k内存 此时根据buddy伙伴系统内存分配方式 最少分配4k为一页 那其中0.4k未被使用的内存就是内碎片
如果使用malloc里面的brk()分配内存,随着系统频繁地 malloc 和 free ,尤其对于小块内存,堆内将产生越来越多不可用的碎片
外碎片
操作系统中无法利用的小内存
在系统中,由于内存分配和释放的不连续性,留下了许多零散的、无法利用的小块内存,这些小块内存加起来尽管足够,但无法分配给较大的进程。
例如,一个 4 KB 的进程释放了内存,但在其两端都是被占用的内存块,导致无法分配给需要更大连续空间的进程。