Linux下获取空闲内存和内存使用率的方法

一项目基于linux开发,包含一个服务器状态监视的功能,一个兄弟完成该功能之后显示内存占用率一直保存在94%以上,虽然测试机只有512M内存,但也不至于空闲内存如此之少,内存使用率如此之高呀,测试人员在提出这个问题之后,那兄弟还搪塞测试人员:linux就这样,内存使用方式和windows不同。

分析了一下这个系统的代码,他从/proc/meminfo中直接读取了MemFree对应的值,直接导致空闲内存不对,内存使用率当然也不对,在Linux下正确获取空闲内存的方法应当如下:

1、读取/proc/meminfo文件,结果如下:

MemTotal:       515880 kB
MemFree:         12748 kB
Buffers:         20768 kB
Cached:         190328 kB
SwapCached:      91920 kB
Active:         349272 kB
Inactive:       119392 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       515880 kB
LowFree:         12748 kB
SwapTotal:      891568 kB
SwapFree:       646656 kB
Dirty:             208 kB
Writeback:           0 kB
AnonPages:      246588 kB
Mapped:          62140 kB
Slab:            25504 kB
SReclaimable:    12256 kB
SUnreclaim:      13248 kB
PageTables:       2592 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   1149508 kB
Committed_AS:   935784 kB
VmallocTotal:   507896 kB
VmallocUsed:      3576 kB
VmallocChunk:   504176 kB

2、MemTotal值作为总内存

3、空闲内存计算方式:如果Cached值大于MemTotal值则空闲内存为MemFree值,否则空闲内存为MemFree值+Buffers值+Cached值

4、内存使用率为:空闲内存/总内存*100%。