我有一个连续运行在Solaris
的进程。 该进程的堆内存使用量会随着时间的推移而不断增加,当它超过4Gb时,进程核心转储量会持续增加。堆内存分析
我试图运行与Purify
的过程,但找不到任何真正泄漏内存的代码。
有什么方法可以分析哪些代码负责增加的堆内存使用情况? 进程的堆内存使用量每15分钟增加4Mb或8Mb,并且永不减少。我使用pmap
命令检查进程堆内存使用情况。
我有一个连续运行在Solaris
的进程。 该进程的堆内存使用量会随着时间的推移而不断增加,当它超过4Gb时,进程核心转储量会持续增加。堆内存分析
我试图运行与Purify
的过程,但找不到任何真正泄漏内存的代码。
有什么方法可以分析哪些代码负责增加的堆内存使用情况? 进程的堆内存使用量每15分钟增加4Mb或8Mb,并且永不减少。我使用pmap
命令检查进程堆内存使用情况。
我会记录到文件中所有与他们被称为找出whene的new
函数被调用没有correcsponding delete
被称为位置调用new
和delete
。也许你在堆中有循环循环。
什么是循环回路? – cppcoder 2012-07-25 11:31:25
@cppcoder - 当一个对象指向另一个对象,并且该对象直接或间接指向第一个对象。 – 2012-07-25 12:26:04
这可能是你在技术上不泄漏内存,但实际上保留了某些指向它的指针。 Purify会认为它没问题。 – 2012-07-25 11:34:37
@BoPersson你是说悬挂指针? – cppcoder 2012-07-25 11:37:09
不,如果您忘记删除其中的一部分,它们就不会晃来晃去。就像建立一个长列表,并添加东西,但一些永远不会被删除。 – 2012-07-25 11:41:03