【问题标题】:How to detect how much handles the application is using如何检测应用程序正在使用多少句柄
【发布时间】:2014-07-25 15:12:45
【问题描述】:

对于我们基于 SWT 的应用程序,我们相对经常收到 SWT 错误“没有更多句柄”。要检测问题是否出在我们的代码中,如何检测 - 在我们的应用程序中使用代码 - 我们的应用程序实际使用了多少句柄?

【问题讨论】:

    标签: java swt


    【解决方案1】:

    如果我理解正确,您可能会遇到以下异常:

    org.eclipse.swt.SWTError: 没有更多句柄

    您可能正在创建未正确处理的资源(例如 Font、Image 或 GC 对象)。您可能需要花点时间阅读SWT guide on Managing Operating System Resources.

    要确定是否确实如此,我可以推荐这篇有用的文章:Diagnosing Handle Leaks in SWT/RCP Windows Applications

    使用 Sleak,它也是一种监控资源的方式。

    【讨论】:

      【解决方案2】:

      在 Windows 任务管理器的“进程”选项卡中,您可以添加“句柄”列,实时显示所有进程使用的句柄。

      【讨论】:

      • 当然,如果您使用的是 Windows,这只是一个解决方案。还是 +1
      【解决方案3】:

      Baz 给 Sleak 的建议给了我这个想法:

      final DeviceData data = new DeviceData();
      data.tracking = true;
      display = new Display(data);
      

      然后我定期记录来自的数字

      final int handleCount = display.getDeviceData().objects.length
      

      不幸的是,检测小部件的数量(我猜,它们也在使用句柄)并非那么容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-31
        • 1970-01-01
        • 1970-01-01
        • 2010-12-27
        相关资源
        最近更新 更多