【问题标题】:Heap memory analysis堆内存分析
【发布时间】:2012-07-23 19:23:11
【问题描述】:

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

我尝试使用Purify 运行该进程,但找不到任何真正泄漏内存的代码。

有没有什么方法可以分析导致堆内存使用量增加的代码? 进程的堆内存使用量每 15 分钟增加 4Mb 或 8Mb,并且从未减少。

我已经使用pmap命令检查进程堆内存使用情况。

【问题讨论】:

  • 这可能是您在技术上没有泄漏内存,但实际上在某处保留了一些指向它的指针。 Purify 会认为没问题。
  • @BoPersson 你是说悬空指针吗?
  • 不,如果您忘记删除其中一些,它们就不会悬空。就像建立一个长长的列表,添加一些东西,但有些东西永远不会被删除。

标签: c++ memory heap-memory


【解决方案1】:

我会将所有对newdelete 的调用记录到一个文件中,其中包含调用它们的位置,以查明何时调用new 函数而没有调用相应的delete。也许你在堆中有循环。

【讨论】:

  • @cppcoder - 当一个对象指向另一个对象并且该对象直接或间接指向第一个对象时。
猜你喜欢
  • 2017-01-12
  • 1970-01-01
  • 2012-11-25
  • 2019-04-27
  • 1970-01-01
  • 2011-02-28
  • 2016-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多