首页 >后端开发 >C++ >如何在运行时有效监控 C 程序内存使用情况(VIRT 和 RES)?

如何在运行时有效监控 C 程序内存使用情况(VIRT 和 RES)?

Susan Sarandon
Susan Sarandon原创
2024-12-05 21:22:10701浏览

How Can I Efficiently Monitor C   Program Memory Usage (VIRT and RES) at Runtime?

使用 C 在运行时获取内存使用情况

本文研究了如何在运行时获取内存使用信息,特别是 VIRT 和 RES C .

尝试过的方法和挑战

尝试利用 getrusage 函数检索此数据始终产生零结果。

使用 /proc 文件的替代方法

对于 Linux 系统,从“/proc/pid”文件读取数据提供了 ioctl() 的可靠替代方案。以下是演示此方法的 C 构造片段:

#include <unistd.h>
#include <ios>
#include <iostream>
#include <fstream>
#include <string>

void process_mem_usage(double& vm_usage, double& resident_set)
{
    vm_usage = 0.0;
    resident_set = 0.0;

    ifstream stat_stream("/proc/self/stat", ios_base::in);
    
    string vsize, rss;
    stat_stream >> vsize >> rss;
    stat_stream.close();

    long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024;
    vm_usage = stod(vsize) / 1024.0;
    resident_set = stod(rss) * page_size_kb;
}

int main()
{
    double vm, rss;
    process_mem_usage(vm, rss);
    std::cout << "VM: " << vm << "; RSS: " << rss << std::endl;
}

以上是如何在运行时有效监控 C 程序内存使用情况(VIRT 和 RES)?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn