windows - SWT 不再有句柄

标签 windows swt handles

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

有人知道为什么吗?

最佳答案

如果我没理解错的话,您可能遇到以下异常:

org.eclipse.swt.SWTError: No more handles

您可能正在创建未正确处置的资源(例如 FontImageGC 对象)。您可能需要花点时间阅读 Managing Operating System Resources 上的 SWT 指南。 .

要确定是否确实如此,我可以推荐这篇有用的文章:Diagnosing Handle Leaks in SWT/RCP Windows Applications ,它解释了资源是什么并建议使用 Process ExplorerDPus定位泄漏。

同事也极力推荐Sleak ,一个专注于 SWT 的应用程序,它实际上可以通知您剩余内存中剩余哪些资源。

要从技术上了解 SWT 正在制作什么句柄,this Sybase article describes有 3 种类型:用户对象、GDI 对象或内核对象句柄,每种句柄都有自己的最大值。

关于windows - SWT 不再有句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2018553/

相关文章:

java - 有没有办法为 SWT 组件启用双缓冲?

ios - 如何向 UIView 添加大小调整 handle ?

c++ - 不存储函数返回的句柄时的内存管理

windows - 如何允许远程访问 PostgreSQL 数据库

c++ - 哪些着色器必须具有输入布局?

java - SWT 按钮网格

java - 如何确定 Java 应用程序速度慢的原因

c++ - 我目前正在创建我的第一个 Windows 设备驱动程序 "Hello world."事件。我正在使用 Microsoft Visual Studio 2012。

c# - 在 C# 中将证书安装到 Windows 本地用户证书存储区

java - 如何在 Windows 上制作相同高度的 SWT 按钮、文本和标签?