【背景】
今天在做维护时,备份数据显示内存不足,因为之前没有接触过,所以找了一下资料,看到别人生动的解释,十分受用,自己也来记录一下。
【介绍】
在linux用free -m查看linux内存使用情况。-m参数就是用M显示内容使用情况,如图:

一、从系统层面分析
Mem:内存的使用情况总览表。
totel:机器总的物理内存 单位为:M
used:用掉的内存。
free:空闲的物理内存。
备注:物理内存(totel)=系统看到的用掉的内存(used)+系统看到的空闲的内存(free)
二、从程序的角度分析
shared:多个进程共享的内存综合,当前废弃不用。
buffers:缓存内存块。
cached:缓存内存数。
注:系统预留的内存=buffers+cached
三、小例子
个人非常喜欢这个小例子,我看这个很快就理解了。
linux系统把物理内存占用一部分,也就是used的大小,然后在这个内存里面分出来一部分供所有的程序实际使用。就如同我买个5亩地,我圈起来,声明我圈到院子里的都是我的,别管我咋使用,然后我拿出来一亩地盖房子。盖房子的这些就是系统程序实际使用的,就是后来所说的:-buffers/cache,然后系统还会预留出来一部分在放子旁边当菜园子,杂物室之类的,buffers和cached就是菜园子杂物室这些占用地。从外界看,我占用的就是5亩地。但实际用到的才1亩地的住房+配房的面积。
得出:我实际占用的地=我盖住房的地方(-buffers/cached)=院子里的地(used)-菜园占地(buffers+cached)
buffers+cached可以分为两部分: +buffers+cached 和 -buffers+cached
总的物理内存=|+buffers+cached| + |-buffers+cached|
-buffers+cached :程序角度看已经使用的内存数,这才是程序实实在在用掉的内存数。
+buffers+cached :程序角度上看未使用、可用的内存书。
四、小结
实际说,程序占用的真正内存就是:-buffers+cached的数值
所以看系统,真正已经用的内存数:used-(buffers+cached)的值
真正未用到的内存书:free+buffers+cached的值

冲冲冲鸭~
本文深入解析Linux内存管理机制,从系统层面和程序角度阐述内存使用情况,包括物理内存、缓存、共享内存等概念,通过生动比喻帮助理解内存分配与使用。
1380

被折叠的 条评论
为什么被折叠?



