首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存消耗迅速增加,然后下降非常缓慢;内存泄漏?

内存消耗迅速增加,然后下降非常缓慢;内存泄漏?
EN

Stack Overflow用户
提问于 2013-10-24 22:08:52
回答 2查看 693关注 0票数 1

我在运行我的程序时遇到了这个问题:

  • 当我的程序的一个功能运行时,内存消耗会很快增加。
  • 我使用性能监视器和虚拟泄漏检测,两者都说没有泄漏。
  • 功能结束后(程序不退出),内存将慢慢下降到正常水平。
  • 程序基本是C#、WPF、C++;

因此,当内存消耗增加时,我的程序驱动的硬件(马达)反应非常缓慢。

我很困惑。这是内存泄漏吗?

我知道很难确定问题在哪里,但我应该如何看待这个问题,有什么共同的逻辑吗?或者任何常用的工具?就像检查进气泄漏/系统倾斜在汽车上通常是从管道,质量气流传感器,或O2传感器.

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-25 17:47:44

内存Profiler为我工作:

内存探查器试用版下载

这是试用版,我喜欢。

票数 0
EN

Stack Overflow用户

发布于 2013-10-24 22:23:46

您可以尝试几种方法--尝试运行Sysinternals tool (进程监视器v3.2),并在windows平台上运行时正确配置符号路径和源代码路径。日志很可能会告诉您导致泄漏的行号和源。您需要知道如何使用进程监视器并在日志中导航。

否则,您也可以尝试下面的CRT来跟踪内存分配/去分配,并提出内存泄漏转储以供进一步研究。以下代码仅在调试模式下工作。

代码语言:javascript
复制
    #define _CRTDBG_MAP_ALLOC
    #include <stdlib.h>
    #include <crtdbg.h>

    #ifdef _DEBUG   
      #ifndef DBG_NEW      
         #define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )      
      #define new DBG_NEW   
      #endif
    #endif  // _DEBUG

    _CrtMemState crtMemStateStart;
    _CrtMemState crtMemStateFinish;

    _CrtMemCheckpoint(&crtMemStateStart);


    // Your suspisious code


     _CrtMemCheckpoint(&crtMemStateFinish);

      int nDifference(0);
      _CrtMemState crtMemStateDifference;
      nDifference = _CrtMemDifference(&crtMemStateDifference, &crtMemStateStart, &crtMemStateFinish);

    if(nDifference > 0)
        _CrtDumpMemoryLeaks();

有关更多信息,请参见此链接:使用CRT库查找内存泄漏

记住,内存泄漏可能有点棘手,特别是如果涉及到COM代码。但是拥有正确的知识和工具肯定会让生活变得容易一些。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19577638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档