【问题标题】:Sudden excessive memory usage [closed]突然过多的内存使用[关闭]
【发布时间】:2010-02-19 14:20:19
【问题描述】:

我有一个问题,我的应用程序可以正常运行几个小时,然后突然增加内存使用量(在几分钟内),直到它崩溃。如果我们在内存使用量增加期间最小化应用程序,内存会下降并保持一段时间。这似乎非常不一致。知道如何解决它/可能是什么原因?

【问题讨论】:

    标签: .net winforms multithreading memory-leaks


    【解决方案1】:

    有很多工具可以帮助您检测此类问题。试试ANTS Memory ProfilerWinDbg + SOS

    ANTS 允许您拍摄快照并进行比较。这将帮助您发现占用额外内存的内容。

    WinDbg 允许您检查堆。 !dumpheap 命令很有用。寻找意外数量的实例。要检查 GC 不回收对象的原因,请使用 !gcroot 命令。在Tess' blog 上抢夺更多关于 WinDBg + SOS 的信息。

    【讨论】:

      【解决方案2】:

      如果您在最小化应用程序的主窗口时发现它显着减少,那么您正在查看错误的内存诊断。这就是工作集,即映射到 RAM 的虚拟内存量。工作集总是可变的,它在很大程度上取决于 其他 进程正在运行以及需要将自己的页面映射到 RAM。当一个应用程序用完可用的虚拟内存时,它会在 OOM 上爆炸,这是一个完全不同的数字。

      是的,使用好的内存分析器来避免得出无助于诊断问题的结论。

      【讨论】:

        【解决方案3】:

        你必须得到一个内存跟踪器/调试器来缩小研究范围

        【讨论】:

          猜你喜欢
          • 2013-05-01
          • 2014-06-29
          • 1970-01-01
          • 1970-01-01
          • 2015-03-15
          • 2021-07-28
          • 2023-03-21
          • 1970-01-01
          • 2021-06-16
          相关资源
          最近更新 更多