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++获取可用内存、当前最大内存等信息相关推荐

  1. Linux —— Ubuntu下C++获取CPU使用率、GPU使用率、GPU温度

      非代码      首先介绍在Ubuntu下不使用代码查看的方式来查看CPU使用率.GPU使用率.GPU温度. 查看CPU使用率:top查看GPU使用率及温度:nvidia-smi   代码     ...

  2. 在Linux(Ubuntu)下搭建ASP.NET Core环境并运行 继续跨平台

    最新教程:http://www.cnblogs.com/linezero/p/aspnetcoreubuntu.html 无需安装mono,在Linux(Ubuntu)下搭建ASP.NET Core环 ...

  3. qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...

    本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开W ...

  4. 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链

    本文主要介绍使用Android NDK生成独立交叉编译链,然后使用独立交叉编译链编译Android程序 下载NDK 下载与自己操作系统相吻合的版本 下载地址 解压到安装目录(如~/myndk): ta ...

  5. linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)

    linux/ubuntu下简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题) 参考文章: (1)linux/ubuntu下简单好用的py ...

  6. Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案

    Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案 参考文章: (1)Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案 (2)https://www.cnblogs.com/ ...

  7. Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法

    Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法 环境: 系统 Ubuntu 22.04 LTS 网卡ax201(微星b660m迫击炮wifi ...

  8. 解决Linux ubuntu下SSH无法连接的问题

    转自:解决Linux ubuntu下SSH无法连接的问题,更优阅读体验:http://www.kongzid.com/ 目录 1.检查是否开启SSH服务 2.安装SSH服务 3.启动SSH服务 4.修 ...

  9. linux/ubuntu下的代码对比工具Meld Diff

    linux/ubuntu下的代码对比工具Meld Diff 做开发的都知道,一个项目多个版本,有的时候多了自己都昏,还有就是比对别人的代码的时候,眼睛看怕是要爆炸. 所以我们一般使用代码对比工具,也就 ...

最新文章

  1. qu.la网站上的小说爬取
  2. 《数学之美》第6章 信息的度量和作用
  3. Web Service 概念
  4. Linux内核实现多路镜像流量聚合和复制
  5. 程序员的国庆节如何安排,你想好了吗?
  6. contab 手动可以 java_crontab 定时执行脚本出错,但手动执行脚本正常
  7. SpringCloud学习笔记006---使用properties配置文件实现多环境配置
  8. gcc编译c文件生成可执行文件
  9. 广播地址为什么只能作为目的地址,不能作为源地址?
  10. PS 动图修改背景坑
  11. 强化学习课程笔记之policy-based方法
  12. Java父亲节贺卡,父亲节贺卡祝福语语句
  13. 关于如何学习编程,这里有两个故事
  14. 达梦数据库DM8安装配置和使用
  15. 空调老大易主后,格力能否下定决心多元化?
  16. Win10环境下基于Hexo的静态博客环境搭建,及其阿里云部署
  17. pygame中display模块方法详解
  18. 打破校史!双非高校,迎来首位杰青!
  19. 微信小程序--震动反馈
  20. select UNION ALL 合并两张表数据

热门文章

  1. 别再感叹科比,他留下的这些已经够我们受用一生!
  2. Pytorch闪电战——autograd
  3. Loncom封装器——从后门攻击到Cobalt Strike渗透测试神器都用到了它
  4. 2030影院群站CMS10影视整站源码+WAP自适应模板
  5. 【Python】邮件批量发送
  6. 什么是奥林匹克.他的来源是什么
  7. 在web浏览器中如何使用智能IC卡来登录系统
  8. Androidの网络通信之TDP
  9. python:用turtle写了一个生日祝福。。。
  10. 12步”教你iPhone程序开发