首页 >后端开发 >C++ >如何在Linux上准确获取C程序运行时内存使用情况?

如何在Linux上准确获取C程序运行时内存使用情况?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-11 09:34:14170浏览

How Can I Accurately Retrieve a C   Program's Runtime Memory Usage on Linux?

使用 /proc/pid 检索 C 中的运行时内存使用情况

在 C 中,获取有关程序在运行时的内存使用情况的信息可能具有挑战性。尽管尝试使用 getrusage(),发帖者始终遇到零值。另一种方法是查询 /proc/pid 目录中的文件。

在 Linux 系统上,/proc/pid 包含特定于进程的信息,包括内存使用情况。为此目的最可靠的文件之一是 /proc/self/stat。通过解析该文件,我们可以提取以下字段:

  • vsize:程序的虚拟内存大小,以千字节 (KB) 为单位
  • rss:程序的驻留集大小,以 KB 为单位(物理内存量)当前正在使用的内存)

要检索这些值,我们可以利用process_mem_usage() 函数:

void process_mem_usage(double& vm_usage, double& resident_set)
{
    // Parse /proc/self/stat
    ifstream stat_stream("/proc/self/stat");
    stat_stream >> ... >> vsize >> rss;
    stat_stream.close();

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

在 main() 函数中,我们可以使用 process_mem_usage() 来打印虚拟内存使用情况和驻留集大小:

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

使用这种方法,我们可以准确获取当前程序运行时的内存使用信息。

以上是如何在Linux上准确获取C程序运行时内存使用情况?的详细内容。更多信息请关注PHP中文网其他相关文章!

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