C++ 堆内存分析
我有一个进程在Solaris中连续运行。 随着时间的推移,进程的堆内存使用量不断增加,当超过4Gb时,进程核心将转储 我尝试使用C++ 堆内存分析,c++,memory,heap,C++,Memory,Heap,我有一个进程在Solaris中连续运行。 随着时间的推移,进程的堆内存使用量不断增加,当超过4Gb时,进程核心将转储 我尝试使用Purify运行该进程,但找不到任何真正泄漏内存的代码 有没有办法分析哪些代码导致堆内存使用率增加? 进程的堆内存使用率每15分钟增加4Mb或8Mb,而且从未减少 我已经使用了pmap命令来检查进程堆内存使用情况。我会将对new和delete的所有调用记录到一个文件中,其中包含调用它们的位置,以确定是否调用了new函数,而没有调用相应的delete。可能堆中有循环。可能
Purify
运行该进程,但找不到任何真正泄漏内存的代码
有没有办法分析哪些代码导致堆内存使用率增加?
进程的堆内存使用率每15分钟增加4Mb或8Mb,而且从未减少
我已经使用了
pmap
命令来检查进程堆内存使用情况。我会将对new
和delete
的所有调用记录到一个文件中,其中包含调用它们的位置,以确定是否调用了new
函数,而没有调用相应的delete
。可能堆中有循环。可能是技术上没有泄漏内存,但实际上在某个地方保留了指向它的指针。Purify会认为它是可以的。@BoPersson你是说悬空指针吗?不,如果你忘记删除一些指针,它们就不会悬空。就像建立一个长长的列表,添加一些东西,但有些永远不会被删除。@cppcoder-当一个对象指向另一个对象,而该对象直接或间接指向第一个对象时。