Linux(Ubuntu)下C++获取可用内存、当前最大内存等信息
Linux(Ubuntu)下C++获取可用内存、当前最大内存等信息
使用sysconf函数获取当前可用内存大小
例程:
/// @brief Get the available memory in MB
/// @return
unsigned long long getAvailableMemory()
{long long pages = sysconf(_SC_AVPHYS_PAGES);long long page_size = sysconf(_SC_PAGE_SIZE) / 1024.0;// 以KB为单位return pages * page_size;
}
使用getrusage获取程序运行中消耗的内存大小
进程资源统计函数getrusage
相当于WIN32 API中的GetProcessMemoryInfo
,可以获取当前进程的内存资源信息。获取程序运行消耗的内存原理是:在运行关键算法前获取当前进程使用的最大内存,算法结束后再次获取当前进程使用的最大内存,相减就得到关键算法所消耗的内存。
例程如下:
// Initial state record.
#ifndef __linux__HANDLE hCurProcess = GetCurrentProcess();_PROCESS_MEMORY_COUNTERS pms1, pms2;GetProcessMemoryInfo(hCurProcess, &pms1, sizeof(_PROCESS_MEMORY_COUNTERS));
#elserusage rs1;getrusage(RUSAGE_SELF, &rs1);
#endif
/ Run some algorithms here.
#ifndef __linux__// Windows PlatformhCurProcess = GetCurrentProcess();GetProcessMemoryInfo(hCurProcess, &pms2, sizeof(_PROCESS_MEMORY_COUNTERS));clock_t t2 = clock();cprintf("时间消耗: %.1lf\n", (t2 - t1) / 1000.0);cprintf("内存消耗: %.1lf MB\n", (pms2.PeakWorkingSetSize - pms1.PeakWorkingSetSize) / (1024.0*1024.0));
#else// Linux Platformrusage rs2;getrusage(RUSAGE_SELF, &rs2);clock_t t2 = clock();cprintf("时间消耗: %.1lf\n", (t2 - t1) / 1000.0);cprintf("内存消耗: %.1lf MB\n", (rs2.ru_maxrss - rs1.ru_maxrss) /1024.0);// .ru_maxrss
#endif
Linux(Ubuntu)下C++获取可用内存、当前最大内存等信息相关推荐
- Linux —— Ubuntu下C++获取CPU使用率、GPU使用率、GPU温度
非代码 首先介绍在Ubuntu下不使用代码查看的方式来查看CPU使用率.GPU使用率.GPU温度. 查看CPU使用率:top查看GPU使用率及温度:nvidia-smi 代码 ...
- 在Linux(Ubuntu)下搭建ASP.NET Core环境并运行 继续跨平台
最新教程:http://www.cnblogs.com/linezero/p/aspnetcoreubuntu.html 无需安装mono,在Linux(Ubuntu)下搭建ASP.NET Core环 ...
- qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...
本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开W ...
- 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链
本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序 下载NDK 下载与自己操作系统相吻合的版本 下载地址 解压到安装目录(如~/myndk): ta ...
- linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)
linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题) 参考文章: (1)linux/ubuntu下简单好用的py ...
- Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案
Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案 参考文章: (1)Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案 (2)https://www.cnblogs.com/ ...
- Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法
Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法 环境: 系统 Ubuntu 22.04 LTS 网卡ax201(微星b660m迫击炮wifi ...
- 解决Linux ubuntu下SSH无法连接的问题
转自:解决Linux ubuntu下SSH无法连接的问题,更优阅读体验:http://www.kongzid.com/ 目录 1.检查是否开启SSH服务 2.安装SSH服务 3.启动SSH服务 4.修 ...
- linux/ubuntu下的代码对比工具Meld Diff
linux/ubuntu下的代码对比工具Meld Diff 做开发的都知道,一个项目多个版本,有的时候多了自己都昏,还有就是比对别人的代码的时候,眼睛看怕是要爆炸. 所以我们一般使用代码对比工具,也就 ...
最新文章
- qu.la网站上的小说爬取
- 《数学之美》第6章 信息的度量和作用
- Web Service 概念
- Linux内核实现多路镜像流量聚合和复制
- 程序员的国庆节如何安排,你想好了吗?
- contab 手动可以 java_crontab 定时执行脚本出错,但手动执行脚本正常
- SpringCloud学习笔记006---使用properties配置文件实现多环境配置
- gcc编译c文件生成可执行文件
- 广播地址为什么只能作为目的地址,不能作为源地址?
- PS 动图修改背景坑
- 强化学习课程笔记之policy-based方法
- Java父亲节贺卡,父亲节贺卡祝福语语句
- 关于如何学习编程,这里有两个故事
- 达梦数据库DM8安装配置和使用
- 空调老大易主后,格力能否下定决心多元化?
- Win10环境下基于Hexo的静态博客环境搭建,及其阿里云部署
- pygame中display模块方法详解
- 打破校史!双非高校,迎来首位杰青!
- 微信小程序--震动反馈
- select UNION ALL 合并两张表数据