【发布时间】:2014-07-25 15:12:45
【问题描述】:
对于我们基于 SWT 的应用程序,我们相对经常收到 SWT 错误“没有更多句柄”。要检测问题是否出在我们的代码中,如何检测 - 在我们的应用程序中使用代码 - 我们的应用程序实际使用了多少句柄?
【问题讨论】:
对于我们基于 SWT 的应用程序,我们相对经常收到 SWT 错误“没有更多句柄”。要检测问题是否出在我们的代码中,如何检测 - 在我们的应用程序中使用代码 - 我们的应用程序实际使用了多少句柄?
【问题讨论】:
如果我理解正确,您可能会遇到以下异常:
org.eclipse.swt.SWTError: 没有更多句柄
您可能正在创建未正确处理的资源(例如 Font、Image 或 GC 对象)。您可能需要花点时间阅读SWT guide on Managing Operating System Resources.
要确定是否确实如此,我可以推荐这篇有用的文章:Diagnosing Handle Leaks in SWT/RCP Windows Applications。
使用 Sleak,它也是一种监控资源的方式。
【讨论】:
在 Windows 任务管理器的“进程”选项卡中,您可以添加“句柄”列,实时显示所有进程使用的句柄。
【讨论】:
Baz 给 Sleak 的建议给了我这个想法:
final DeviceData data = new DeviceData();
data.tracking = true;
display = new Display(data);
然后我定期记录来自的数字
final int handleCount = display.getDeviceData().objects.length
不幸的是,检测小部件的数量(我猜,它们也在使用句柄)并非那么容易。
【讨论】: