OutOfMemoryException -如何查找内存泄漏

本文关键字:查找 内存 泄漏 何查找 OutOfMemoryException | 更新日期: 2023-09-27 18:14:17

我正在开发一个WinForm应用程序。当长时间运行它而不停止时,它会突然引发一个OutOfMemoryException。我不知道如何找出造成这个异常的原因。我使用任务管理器查看我的应用程序要使用多少内存,我看到它只占用90000 KB,而我的RAM是2GB。我不知道这是一个内存泄漏错误?如果是,我记得有一些。net工具可以帮助查找内存泄漏。

请帮帮我。谢谢。

OutOfMemoryException -如何查找内存泄漏

如果您通过WinDbg运行应用程序,您将能够获得内存中所有对象的分解。一个异常大的数字将锁定导致此行为的确切对象。

你可以按照这些说明去做

在一个坚果壳里你做

  1. 将WinDbg附加到进程
  2. <
  3. 问题strong>。加载SOS.dll命令
  4. <
  5. 问题strong> !dumpheap -stat 查看管理对象

vmmap

一个有用的工具来查看你的进程使用了多少内存和哪种内存。

<

CLR分析器/h2>

提供堆的图形化视图,以及哪些对象持有哪些对象。它可能有点慢,但如果泄漏在托管堆中,它将非常容易地指出问题的类型。这是一个指南。

WinDBG

就像parapura提到的,这将让您找到泄漏,但有一个陡峭的学习曲线(几乎没有gui)。