SWT 不再有句柄

2024-04-23

Windows XP 每个进程的用户句柄限制为 10000 个,每个桌面会话的用户句柄总数为 32000 个。但是,当我运行 4 或 5 个 SWT 进程(每个进程消耗不超过 2000 个用户句柄)时,总是会抛出 SWT No More handles 异常。

有谁知道为什么?


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

org.eclipse.swt.SWTError: No more handles

您可能正在创建资源(例如Font, Image or GC对象),您没有正确处理。您可能需要花点时间阅读 SWT 指南管理操作系统资源 http://www.eclipse.org/articles/swt-design-2/swt-design-2.html.

为了确定情况是否确实如此,我可以推荐这篇有用的文章:诊断 SWT/RCP Windows 应用程序中的句柄泄漏 https://i-proving.com/2006/06/05/diagnosing-handle-leaks-in-swtrcp-windows-applications/,它解释了什么是资源并建议使用流程浏览器 http://technet.microsoft.com/en-us/sysinternals/bb896653 or DPus http://ltearno.free.fr/dpus/来定位泄漏。

同事也极力推荐Sleak http://www.eclipse.org/articles/swt-design-2/sleak.htm,一个以 SWT 为中心的应用程序,它实际上可以告诉您剩余内存中还剩余哪些资源。

为了对 SWT 正在制作的处理有一个非常技术性的理解,这篇 Sybase 文章介绍了 http://www.sybase.com/detail?id=1019174共有三种类型:用户对象、GDI 对象或内核对象句柄,每种句柄都有自己的最大值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SWT 不再有句柄 的相关文章

随机推荐