加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 05:34:45 所属栏目:Windows 来源:网络整理
导读:我有一个运行在大量XPS文档(数千个)上的WinForms .Net应用程序,在此运行期间,每个文档的句柄数量(根据sysinternals进程监视器和任务管理器)增加了3-10个.我非常怀疑这些是MS .Net XPS框架库打开但未关闭的句柄,但我无法追踪它. 尽管单步执行代码,但在同一运
我有一个运行在大量XPS文档(数千个)上的WinForms .Net应用程序,在此运行期间,每个文档的句柄数量(根据sysinternals进程监视器和任务管理器)增加了3-10个.我非常怀疑这些是MS .Net XPS框架库打开但未关闭的句柄,但我无法追踪它.

尽管单步执行代码,但在同一运行期间,句柄计数会在不同点上增加.例如,一个遍历循环,句柄计数将在一行上跳过1,下次可能不会,或者它可能会跳过2.所以我怀疑XPS com组件有句柄泄漏.

内存使用虽然很好,但是如果我继续用尽这样的句柄,那么我会崩溃应用程序,也许是桌面.

到目前为止,我已经尝试使用sysinternals进程资源管理器来查看句柄,但它们都被标记为没有更多细节.还使用了来自sysinternals的handle.exe,这并未显示快照之前,期间和之后的任何显着差异.

关于如何追踪手柄走向的任何线索?我想我将不得不简化为单线程控制台应用程序进行测试.

问候

瑞安

解决方法

虽然单数使用有点贵,但我们使用 ANTS Profiler,这对于找到这样的问题非常有帮助.您可以下载并试用试用版.

可能还有其他好的剖析器,但这是我熟悉的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读