Linux系统当前可用内存

你可以在Linux中,敲入free命令获得当前系统的内存使用情况。
#busybox free
total used free shared buffers
Mem: 55636 52808 2828 0 3132
Swap: 0 0 0
Total: 55636 52808 2828
当我满心欢喜的敲入上面的命令时,收到的却是一阵阵的冷汗,2828k,我的系统只剩下了2M多的内存,系统还能跑吗,是不是命令有错误!!!
让我们来看看在PC机上的Linux系统中,结果是什么样子的。
#free
total used free shared buffers cached
Mem: 4091524 4021016 70508 0 7656 1824312
-/+ buffers/cache: 2189048 1902476
Swap: 4088532 2891732 1196800
这里我先解释一下几个关键的概念。
buffers:主要是用来给Linux系统中块设备做缓冲区。
cached:用来缓冲我们所打开的文件
在系统中内存是很宝贵的资源,Linux的思想是,如果内存充足,不用白不用,它会使用内存来cache一些文件,从而加快进程的运行速度;当内存不足时,这些内存又会被回收,供程序使用。
所以真正可用的内存=free+buffers+cached=70508+7656+1824312=1902476。
这样,我们就很清楚了,的确是busybox在实现free时有缺陷,它缺少了关键的一列cache,因此我们无法获得确切的空闲内存值。
既然free命令行不通,那么我们的重点放在了free的数据是从哪里来的!
答案是:/proc
/proc目录是一个特殊的文件系统,它不占用磁盘空间,该目录下的内容是根据用户请求的信息,由Linux内核实时生成的。所以我们可以通过proc目录,来访问Linux内核中的一部分数据。
我们可以从proc目录下的meminfo文件,获得当前系统的内存使用情况。
# cat /proc/meminfo
MemTotal: 55880 kB
MemFree: 2252 kB
Buffers: 3760 kB
Cached: 26112 kB
SwapCached: 0 kB
Active: 34652 kB
Inactive: 8716 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 55880 kB
LowFree: 2252 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
Mapped: 34220 kB
Slab: 4504 kB
CommitLimit: 27940 kB
Committed_AS: 109704 kB
PageTables: 1876 kB
VmallocTotal: 196608 kB
VmallocUsed: 2360 kB
VmallocChunk: 4112384 kB
从上面的结果,我们可以知道系统当前总共拥有55880k物理内存,
其中
free 2252kB
Buffers 3760 kB
Cached 26112 kB
那么当前可用的物理内存=2252+3760+26112=32124kB,应该说还是不少的。
终于我们经过千辛万苦得到了现在系统可用内存,也就可以很容易的计算出
使用的物理内存=55880-32124=23756kB

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值