云计算百科
云计算领域专业知识百科平台

内存碎片整理

碎片是如何产生的

先理解一个类比:内存碎片就像停车场里的车东一辆西一辆随便停——总空位够多,但中间插着别人的车,来了一辆大巴就是找不到一整块连续的空位停进去。

技术上说,内存碎片是指系统中有大量空闲内存,但这些空闲区域散布在不连续的物理地址上,导致无法满足连续大块内存的分配请求。随着页面不断地分配和释放,空闲页被\”打散\”成许多小块,这就是碎片化过程。

内存分配器按需分配页面,释放时又把页面归还给伙伴系统。如果分配和释放的顺序不对齐——先分配几个页面,释放中间的,再分配一个大块——空闲区域就被\”切割\”成了碎片段。一个Android设备连续运行几天后,这种现象尤其明显:meminfo里的MemFree可能还有几百MB,但分配一块连续16MB的DMA内存却失败。

应用锚点:你明天排查一台连续运行多日的设备时,如果dmesg里出现\”page allocation failure\”且/proc/buddyinfo中高阶空闲块为0,第一反应就该检查碎片指数——这不是内存不够,是内存排布出了问题。

碎片的两张面孔

碎片类型
产生原因
典型场景
对Android的影响

<

外部碎片 页面分配与释放顺序交错,空闲页不连续 长时间运行、频繁分配释放大块内存
赞(0)
未经允许不得转载:网硕互联帮助中心 » 内存碎片整理
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!