通过 proc 文件系统获取
在 proc下面有 proc/meminfo 该文件会提供 对应对应此时此刻的内存的使用的情况
系统很多上层接口的数据来源也是出自于此。
cat /proc/meminfo
MemTotal: 131921988 kB
MemFree: 90476752 kB
Buffers: 765764 kB
Cached: 13274276 kB
SwapCached: 131872 kB
Active: 27448120 kB
Inactive: 9399016 kB
Active(anon): 21696856 kB
Inactive(anon): 1133872 kB
....
通过sysinfo
Linux中,sysinfo主要是用来获取系统相关信息。
Linux中,sysinfo是用来获取系统相关信息的结构体。
函数声明和原型:
#include <sys/sysinfo.h>
int sysinfo(struct sysinfo *info);
主要成员。
struct sysinfo {
long uptime;
/* 启动到现在经过的时间 */
unsigned long loads[3];
/* 1, 5, and 15 minute load averages */
unsigned long totalram; /* 总的可用的内存大小 */
unsigned long freeram; /* 还未被使用的内存大小 */
unsigned long sharedram; /* 共享的存储器的大小 */
unsigned long bufferram; /* 缓冲区大小 */
unsigned long totalswap; /* 交换区大小 */
unsigned long freeswap; /* 还可用的交换区大小 */
unsigned short procs; /* 当前进程数目 */
char _f[22]; /* 64字节的补丁结构 */
....
可以利用该接口 对应的内存状况。
参考例子:
size_t getFreeMemorySize()
{
struct sysinfo memInfo;
sysinfo(&memInfo);
return memInfo.freeram/1024/1024;
}