SWT没有更多的句柄

Jam*_*mes 25 windows swt handles

Windows XP为每个进程限制10000个用户句柄,每个桌面会话总共32000个用户句柄.但是,当我运行4或5个SWT进程时,每个消耗不超过2000个用户句柄,SWT No More处理异常将始终抛出.

有谁知道为什么?

Pau*_*sma 44

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

org.eclipse.swt.SWTError: No more handles
Run Code Online (Sandbox Code Playgroud)

你可能会创建资源(如Font,ImageGC对象),你是不是正确处置.您可能需要花一点时间阅读有关管理操作系统资源的SWT指南.

为了确定是否确实如此,我可以推荐这篇有用的文章:诊断SWT/RCP Windows应用程序中的句柄泄漏,它解释了什么是资源,并建议使用Process ExplorerDPus来定位泄漏.

同事还强烈建议使用专注于SWT的应用程序Sleak,该应用程序实际上可以告知您剩余内存中剩余的资源.

为了非常技术地理解SWT处理的内容,这篇Sybase文章描述了三种类型:用户对象,GDI对象或内核对象句柄,每个句柄都有自己的最大值.


小智 7

您的程序中最有可能出现某种资源泄漏.使用以下实用程序(http://www.eclipse.org/articles/swt-design-2/sleak.htm)作为查找swt资源泄漏的简便方法.我用它来清理我正在处理的rcp应用程序中的一大堆问题