【问题标题】:How do I get the current size of the heap memory of a process in Linux using C/C++ system calls?如何使用 C/C++ 系统调用获取 Linux 中进程堆内存的当前大小?
【发布时间】:2018-05-28 03:49:18
【问题描述】:

我正在开发一个软件库,它可以持续跟踪用 C/C++ 编写的程序的堆内存大小。

我想做的如下。

void check_memory(){

  heap_size = get_process_heap_size(.....);

  if(heap_size>=upper_bound){

    //do something to reduce the heap size

    heap_size = get_process_heap_size(.....); 
  }
}

C/C++中有没有系统调用相当于上面代码中的get_process_heap_size()?

【问题讨论】:

  • @Scheff 阅读提供的链接我不明白如何解决 OPs 问题。你能详细说明一下吗?
  • @Scheff,malloc 使用 brk 和 mmap 分配。
  • 在我的 linux 上:/proc/self/maps,self 指的是正在获取该文件的文件描述符的进程。

标签: c++ c memory-management operating-system heap-memory


【解决方案1】:

我不知道是否有任何直接的系统调用可以为您提供内存详细信息,但如果您在 linux 上,您可以读取和解析 /proc/(您的进程的 pid)/status 文件以获得所需的内存使用计数

【讨论】:

    猜你喜欢
    • 2021-09-17
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2019-10-19
    相关资源
    最近更新 更多