ubuntu下C/C++获取剩余内存
2024-09-24 10:32:14
#include <stdio.h>
#include <unistd.h>
long get_memory_usage()
{
long page_size = sysconf (_SC_PAGESIZE);
long num_pages = sysconf (_SC_PHYS_PAGES);
long mem = (num_pages/) * (page_size/);
long long free_pages = sysconf (_SC_AVPHYS_PAGES);
long long free_mem = (free_pages/) * (page_size/);
fprintf(stderr,"Memory %lld MB\\%lld MB.\n", mem, free_mem);
return (long)(free_mem);
}
获取结果与System Monitor中的不一致,不过内存管够的情况下一般在150~200MB之间波动,重启阈值设在100MB可以凑合用
另一方法
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
long get_memory_usage()
{
FILE*file=fopen("/proc/meminfo","r");
if(file == NULL){
fprintf(stderr,"cannot open /proc/meminfo\n");
return -1;
}
char keyword[];
char valuech[];
long mem =;
long free_mem =;
fscanf(file,"MemTotal: %s kB\n",keyword);
mem=atol(keyword)/;
fscanf(file,"MemFree: %s kB\n",valuech);
fscanf(file,"MemAvailable: %s kB\n",valuech);
free_mem=atol(valuech)/;
fclose(file);
fprintf(stderr,"Memory %ld MB\\%ld MB.\n", mem, free_mem);
return (long)(free_mem);
}
与在GUI中可见的剩余内存相同,推荐作为参考方法
最新文章
- django 第二天 制作小demo
- 群里分享的react的收藏一下!今日周末,改了个表单验证然后无所事事了!
- JMeter 将上一个请求的结果作为下一个请求的参数——使用正则提取器(转载)
- CSS3学习之分享下transition属性
- AnjularJs的增删改查(单页网站)
- 关于linux中执行脚本或程序时指定的路径
- try catch语句在VC下的处理
- how to get file from classpath using jboss7.x.1 --reference
- (原)Understand中查看函数调用关系
- tomcat7启动闪退
- JDBC ---获取数据字段 -- 转成map
- 转:甲骨文发布大数据解决方案 含最新版NoSQL数据库
- Kafka系列三 java API操作
- Android学习之Menu
- Spring_day02--AOP概念、原理、操作术语
- 【我的Android进阶之旅】推荐一款视频转换GIF图片格式的转换工具(Video to GIF)
- angular之自定义管道
- 五、mybatis集成使用
- python 时间和时间戳的转化
- init_connect基本用法