首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找我的.Net应用程序泄漏Windows句柄的位置?

如何查找我的.Net应用程序泄漏Windows句柄的位置?
EN

Stack Overflow用户
提问于 2008-10-23 20:53:05
回答 4查看 2.2K关注 0票数 4

我有一个WinForms .Net应用程序,它运行了大量的XPS文档(数千个),在这个过程中,每个文档的句柄数量(根据sysinternals,进程监视器和任务管理器)增加了3-10个。我非常怀疑这些句柄是由MS .Net XPS框架库打开的,而不是关闭的,但我无法追踪到它。

尽管单步执行代码,句柄计数在同一运行期间的不同点都会增加。例如,一次通过循环,句柄计数将在一行上跳1,下一次可能不会,或者可能跳2。因此,我怀疑XPS com组件存在句柄泄漏。

内存使用是很好的,但是如果我一直像这样耗尽句柄,那么我会使应用程序崩溃,可能还会导致桌面崩溃。

到目前为止,我已经尝试过sysinternals process explorer来查看句柄,但它们都被标记为没有更多细节。我还使用了sysinternals中的handle.exe,这在快照之前、期间和之后没有显示任何显著的差异。

有没有关于如何追踪手柄去向的线索?我想我将不得不简化为一个单线程控制台应用程序来进行测试。

问候

瑞安

EN

回答 4

Stack Overflow用户

发布于 2008-10-23 20:54:50

可能很愚蠢,但你有没有检查过你正在处理所有一次性的东西?

票数 1
EN

Stack Overflow用户

发布于 2008-10-23 20:57:14

虽然单独使用它有点贵,但我们使用ANTS Profiler,它在查找这样的问题时非常有帮助。您可以下载并试用试用版。

可能还有其他优秀的分析器,但这是我所熟悉的。

票数 1
EN

Stack Overflow用户

发布于 2009-03-30 21:31:18

那么,您是否忘记删除从PackageStore中创建的XPS文档?那么用来支持你的包的任何MemoryStreams呢?

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

https://stackoverflow.com/questions/231480

复制
相关文章

相似问题

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