【发布时间】:2019-06-14 16:53:44
【问题描述】:
我有一个 Linux/Mac C++ 库,它以函数调用的形式执行一系列步骤。我想测量每个步骤中的最大内存使用量。
我不对临时解决方案感兴趣,例如启动另一个轮询内存使用情况的线程、运行分析器等。
到目前为止,我发现 getrusage() 存在于 Mac 和 Linux 上,并且确实返回了最大内存使用量,但似乎无法在每次函数调用后重置此最大值。
有没有办法绕过这个限制?
编辑: 明确地说,我不想征用 malloc()/free() 并记录所有内容。我想要一个适合继续运行生产代码的解决方案。
【问题讨论】:
-
那是关于在我的程序中添加分析器,我说过我不想这样做。
-
为什么要添加?第二个是预加载的预编译包。
-
在链接的问题中添加了 heaptrack。
-
这是一个将分发给其他人的库。我不想在他们身上强制使用像
gperftools这样的分析器。它不是为在生产环境中运行而设计的——仅用于调试。