gpt4 book ai didi

c++ - 测量函数调用期间的最大内存使用量

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:11 24 4
gpt4 key购买 nike

我有一个 Linux/Mac C++ 库,它以函数调用的形式执行一系列步骤。我想测量每个步骤中的最大内存使用量。

对临时解决方案感兴趣,比如启动另一个线程来轮询内存使用情况、运行分析器等。

到目前为止,我发现 getrusage() 存在于 Mac 和 Linux 上,并且确实会返回最大内存使用量,但似乎无法在每次函数调用后重置此最大值。

有什么办法可以绕过这个限制吗?

编辑: 明确地说,我不想占用 malloc()/free() 并记录所有内容。我想要一个适合继续运行生产代码的解决方案。

最佳答案

我浏览了 Linux 源代码,找到了 this :

        /*
* Writing 5 to /proc/pid/clear_refs resets the peak
* resident set size to this mm's current rss value.
*/

我还没有尝试过,但看起来很有希望。

编辑:它是在 this commit 中添加的

编辑 2:我查看了 MacOS 内核源代码 - 相应的值存储在 resident_max 中.不幸的是,似乎没有重置它的功能。

编辑 3:在 Linux 上,您可以使用 malloc_info() 获得最大分配内存,但似乎无法重置它。它还依赖于您使用 glibc

关于c++ - 测量函数调用期间的最大内存使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54287611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com