2012-07-25 47 views
0

我有一个连续运行在Solaris的进程。 该进程的堆内存使用量会随着时间的推移而不断增加,当它超过4Gb时,进程核心转储量会持续增加。堆内存分析

我试图运行与Purify的过程,但找不到任何真正泄漏内存的代码。

有什么方法可以分析哪些代码负责增加的堆内存使用情况? 进程的堆内存使用量每15分钟增加4Mb或8Mb,并且永不减少。我使用pmap命令检查进程堆内存使用情况。

+0

这可能是你在技术上不泄漏内存,但实际上保留了某些指向它的指针。 Purify会认为它没问题。 – 2012-07-25 11:34:37

+0

@BoPersson你是说悬挂指针? – cppcoder 2012-07-25 11:37:09

+0

不,如果您忘记删除其中的一部分,它们就不会晃来晃去。就像建立一个长列表,并添加东西,但一些永远不会被删除。 – 2012-07-25 11:41:03

回答

0

我会记录到文件中所有与他们被称为找出whene的new函数被调用没有correcsponding delete被称为位置调用newdelete。也许你在堆中有循环循环。

+0

什么是循环回路? – cppcoder 2012-07-25 11:31:25

+0

@cppcoder - 当一个对象指向另一个对象,并且该对象直接或间接指向第一个对象。 – 2012-07-25 12:26:04