内存分配器为何区分栈、堆、小对象与大对象,内存泄漏和内存碎片应如何判断?
简答题中等785 次浏览
参考答案与解析
# 核心结论
内存管理之所以区分栈、堆、小对象和大对象,是因为它们在生命周期、分配频率、大小分布、并发方式和归还策略上存在明显差异。栈通常随函数调用自动增长和回退,分配接近调整栈指针,速度快但容量有限;堆用于生命周期不能由调用层级确定的对象,由用户态分配器与操作系统虚拟内存机制协作管理。小对象适合从尺寸类别、空闲链表和线程缓存中快速取得,大对象则常通过独立映射或大块区域管理,以便降低碎片并更容易归还系统。
内存泄漏与内存碎片应根据“活跃对象”和“实际占用”的关系判断。泄漏表示不再需要的对象仍被引用,或其地址已经丢失而无法释放;碎片表示空闲空间存在,却因块的位置、尺寸、对齐或页面归还条件而难以复用或返还操作系统。进程常驻集没有
