OutOfMemoryException -如何查找内存泄漏
本文关键字:查找 内存 泄漏 何查找 OutOfMemoryException | 更新日期: 2023-09-27 18:14:17
我正在开发一个WinForm应用程序。当长时间运行它而不停止时,它会突然引发一个OutOfMemoryException。我不知道如何找出造成这个异常的原因。我使用任务管理器查看我的应用程序要使用多少内存,我看到它只占用90000 KB,而我的RAM是2GB。我不知道这是一个内存泄漏错误?如果是,我记得有一些。net工具可以帮助查找内存泄漏。
请帮帮我。谢谢。
如果您通过WinDbg运行应用程序,您将能够获得内存中所有对象的分解。一个异常大的数字将锁定导致此行为的确切对象。
你可以按照这些说明去做
在一个坚果壳里你做
- 将WinDbg附加到进程 <
- 问题strong>。加载SOS.dll命令 <
- 问题strong> !dumpheap -stat 查看管理对象
vmmap
一个有用的工具来查看你的进程使用了多少内存和哪种内存。
<CLR分析器/h2>
提供堆的图形化视图,以及哪些对象持有哪些对象。它可能有点慢,但如果泄漏在托管堆中,它将非常容易地指出问题的类型。这是一个指南。
WinDBG
就像parapura提到的,这将让您找到泄漏,但有一个陡峭的学习曲线(几乎没有gui)。