如何在程序中获取进程所使用的内存量?

23 浏览
0 Comments

如何在程序中获取进程所使用的内存量?

这个问题已经有答案了:

如何在进程内部确定CPU和内存消耗

我正在运行一些测试代码(自己写的),我想让它们自我报告使用了多少内存。理想情况下,应该是一个高水位标记。类似于 Activity Monitor 或 top 报告的内容。

C ++ 代码,需要在 OSX 和 / 或 Linux 上使用。如果有适用于两者的方法,那就太好了,否则,适用于任何一方的方法都可以。

如何在 OSX 程序中找到它正在使用的多少内存?

admin 更改状态以发布 2023年5月23日
0
0 Comments

我可能会考虑使用类似于tcmalloc、jemalloc或其他malloc替代方法。tcmalloc提供了相当多的内省功能-http://gperftools.googlecode.com/svn/trunk/doc/tcmalloc.html介绍了它提供的概述。在“通用Tcmalloc状态”和“内存内省”部分查看某些可能有助于您选择这条路的想法。如果您想了解jemalloc,请参阅http://www.facebook.com/notes/facebook-engineering/scalable-memory-allocation-using-jemalloc/480222803919

此外,还有一些依赖于操作系统的机制来获取信息。在Linux上,/proc/self/statm应该具有您需要的所有内容。man proc应该有有关那里文件的文档。

为统计数据进行仪器化的malloc替代方法可能比您自己实现的任何方法更易于使用、更具可移植性和更全面。

0