linux清除缓存
1、以下函数是剩余内存,不包括缓存,小于20M,就自动清除缓存。
void clearCache()
{//开始判断内存使用情况
FILE *pp = popen("cat /proc/meminfo |head -n2|tail -n1|cut -d \"\040\" -f 12", "r"); //建立管道
if (!pp) {
return;
}
char tmp[1024]={"\0"}; //设置一个合适的长度,以存储每一行输出
fread(tmp, sizeof(char), sizeof(tmp), pp);
pclose(pp);
print_Log(KRED,"tmp=%s",tmp);
int lfreesize = atoi(tmp);
lfreesize = lfreesize-10*1024; //减去程序运行所需要的空间
if((lfreesize/1024) < 20){ //如果小于20M,则需清理内存
//同步
QString program = "sync";
QProcess *myProcess = new QProcess();
myProcess->start(program);
//清理内存
system("echo 3 > /proc/sys/vm/drop_caches");
}
}
2、直接清除缓存命令
sync
echo 1 > /proc/sys/vm/drop_caches
博文推荐:
http://www.linuxidc.com/Linux/2012-04/58184.htm