【问题标题】:What is the best way to track and lower GD handles?跟踪和降低 GD 句柄的最佳方法是什么?
【发布时间】:2010-09-24 00:09:53
【问题描述】:

跟踪和降低 GDI 窗口句柄的最佳方法是什么。 .

【问题讨论】:

    标签: c# windows memory gdi


    【解决方案1】:

    要跟踪 GDI 句柄,我建议使用 GDIView from Nirsoft。它是一个免费软件,可以显示每种类型(Pen、Brush、Bitmap、Font、DC ...)有多少个 GDI 句柄有一个进程。

    【讨论】:

    • 这个工具完全没用。它告诉我我有 24 个画笔、50 个位图、60 个字体、14 个区域和 24 个 DC。然后它计算出总共 562 个 GDI 句柄! Taskmanager 还告诉我他们是 562,但 GDIView 无法给我所需的详细信息。
    【解决方案2】:

    不久前我写了一个工具来追踪资源泄漏。它托管在google code。虽然它是一个本地库,但我相信它也可以用来追踪 .NET 代码中的漏洞。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      您不需要任何工具。 只需用win32 api阅读GDI句柄表

      【讨论】:

      • 你会怎么做。 .这会告诉你句柄来自哪里吗?
      【解决方案5】:

      查看最终用户计算机上当前使用情况的最简单方法是使用任务管理器并查看“GDI 句柄”列

      当我怀疑我有 GDI 处理泄漏时,我倾向于运行一次泄漏场景,强制进行垃圾收集,查看任务管理器,使用 gc 再次运行该操作并检查差异。如果我找到了一个,我使用了 .Net Profiler(来自 SciTech),它可以详细显示导致泄漏的对象以及为什么不归还它

      【讨论】:

        【解决方案6】:

        我个人使用IARSN TaskInfo 来查看我的程序使用的句柄数量,包括 GDI。至于减少活动句柄的数量,那么我会看看你的应用程序中使用的是什么句柄。

        类似(但不限于):

        • 位图
        • 控件(我认为并非所有控件都使用句柄​​)

        您是否有句柄过多的特定问题,或者甚至可能是句柄泄漏?

        【讨论】:

        • 我认为是这样,但我正在尝试确定如何诊断此问题并确定如何解决此问题
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        • 1970-01-01
        • 2010-09-16
        相关资源
        最近更新 更多