【发布时间】:2013-11-17 03:36:57
【问题描述】:
我正在运行一些测试代码(我自己的),我希望它们自行报告它们使用了多少内存。理想情况下,这将是一个高水位线。类似于 Activity Monitor 或 top 报告的内容。
C++ 代码,需要在 OSX 和/或 Linux 上工作。一种对两者都适用的方法会很棒,如果不是对任何一种都适用的方法会受到欢迎。
OSX 程序如何知道它使用了多少内存?
【问题讨论】:
-
xcode 有很多分析工具,只需在菜单中进行分析或按 cmd I
-
如果要跟踪堆使用情况,一种方法是覆盖全局 new 和 delete 运算符,并让它们在调用时调整计数器的值。 (棘手的一点是让全局删除运算符将计数器向下调整正确的数量——您必须自己存储分配大小才能做到这一点,通常在用户可见的分配缓冲区之前的一些额外字节中)
-
如果您将自己的全局
new和delete一起破解,您还必须注意诸如碎片之类的事情,这可能会导致当前分配的字节数之间存在很大差异对象和进程使用的字节数/页数,这可能是更大的问题。 -
@bmargulies 这正是我正在寻找的。我认为这样的东西一定存在于某个地方,但这次我的 Google-fu 让我失望了。谢谢!是时候投票结束我自己的问题了:)
标签: c++ linux macos memory-management