linux机制来衡量进程内存消耗f

时间:2011-07-10 21:54:53

标签: c linux unix memory-management

以编程方式从同一个运行进程中测量堆内存消耗的最有效和最准确的方法/ API是什么?我想估计(尽可能准确)自启动以来已经有多少内存newmalloc,减去已经freedelete的内存

问题的范围是linux和其他可能的Linux环境。语言是C或C ++


修改  我的目的足以通过任何malloc实现知道已分配/保持块的实际数量(和大小),我不需要实际malloc内存的细节减去释放的内存

5 个答案:

答案 0 :(得分:3)

假设新用途malloc看here

有关进程内存分配的更多详细信息,请查看/ proc / [pid] / maps。

另请注意,linux实现了copy-on-write。这意味着有时进程可以共享内存。如果在没有调用exec的情况下分叉进程,则尤其如此。

答案 1 :(得分:3)

您可以使用mallinfo进行估算。我刚发现这个,不确定这是过程还是系统..:/

我不完全确定你在问什么,因为内存碎片,malloc减去释放的数量少于实际使用量,如果你真的需要这个数字,你必须使用自定义分配器(这是现有分配器的微小包装器) 在你的代码中无处不在,这将是痛苦的。

答案 2 :(得分:1)

您是否考虑过阅读/ proc / u / stat? (其中“你”是你的pid)

答案 3 :(得分:0)

如果您使用valgrind并运行程序完成,它会为您提供内存使用情况的报告。

http://valgrind.org/

答案 4 :(得分:0)

通过链接tcmalloc from Google Perftools,您可以获得有关堆使用情况的大量信息。它旨在定位内存泄漏并确定“分配所有RAM的人”,但它提供了足够的工具来回答您对堆的大多数问题。

相关问题