如何以编程方式获取进程使用的内存量?

时间:2013-11-06 02:25:56

标签: c++ linux macos memory-management

我正在运行一些测试代码(我自己的),我希望他们自我报告他们使用了多少内存。理想情况下,这将是一个高水位标记。类似于活动监视器或top报告的内容。

C ++代码,需要在OSX和/或Linux上运行。对两者都有效的方法会很棒,如果不是任何一种方法都可以使用。

OSX程序如何找出它使用了多少内存?

1 个答案:

答案 0 :(得分:1)

我可能会研究类似tcmalloc,jemalloc或其他一些malloc替代品。 tcmalloc提供了相当多的内省 - http://gperftools.googlecode.com/svn/trunk/doc/tcmalloc.html概述了它提供的内容。请查看“Generic Tcmalloc Status”和“Memory Introspection”部分,了解一些可能有用的想法,如果您选择走这条路线。如果您想阅读有关jemalloc的信息,请参阅http://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919

除此之外,还有一些与操作系统相关的机制来获取信息。在linux上,/ proc / self / statm应该拥有你想要的一切。 man proc应该有关于文件的文档。

为统计数据配备的malloc替换可能比您自己实现的任何内容都更容易使用,更便携,更全面。