gpt4 book ai didi

c++ - 堆大小不断增加直到应用程序崩溃 (C++)

转载 作者:太空狗 更新时间:2023-10-29 12:32:53 26 4
gpt4 key购买 nike

我想咨询一下这个问题

我有一个正在运行的程序,从长远来看,它的内存会不断增加,直到所有资源都耗尽,当然它会崩溃(需要几天时间才能达到临界大小)。

到目前为止我所做的是使用 Valgrind,发现所有内存泄漏并修复它们,但现在我仍然有一个小的内存泄漏,这是由堆大小增加引起的,为此我使用了 Valgrind massif 工具。

问题是当我使用 massif 时,它不能运行太长时间,并导致应用程序在几个小时后崩溃。我试图找到运行一小时的内存泄漏问题,即最小阈值不能从内存的 1% 降低的问题,1 小时后我可以看到内存增加,但与应用程序的其余部分相比仍然很小.所以我可以看到占用更多内存的部分,但看不到哪些部分

example in valgrind output file:
->03.11% (4,377,152B) in 28 places, all below massif's threshold (01.00%)

有什么想法吗?

最佳答案

使用google perftools .
你可以链接你的程序甚至 LD_PRELOAD 库,它会分析你的堆使用生成快照,它不会影响你的性能,当你看到堆已经太大时你可以停止它并得到一个图表内存消耗的位置。

编辑: tutorial here

例子: enter image description here

关于c++ - 堆大小不断增加直到应用程序崩溃 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21703267/

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