时不时地,我会被“org.eclipse.swt.SWTError:没有更多句柄”所困扰。我已经知道像 GDIView 这样的工具,可以观察分配的句柄数量,但现在我想知道是否有更好的方法来做到这一点。
有可用的工具吗?也许在创建句柄时记录所有堆栈跟踪?其中显示了两个调用点之间的新句柄?
问候, 丹尼尔
PS:添加了 windows 标签,因为开发主要发生在 Windows 上,并且仅 Windows 工具就足够了。
我发现了Sleak,这是一个调试 SWT 资源的好工具!强烈推荐给有同样问题的每个人。甚至还显示图片资源的图片!
对我来说,问题只是 new Shell() 被调用得太频繁。将 shell 存储为静态成员并重用它会有所帮助。因此,在应用像 Sleak 这样的工具之前,其他人可能想要对“new Shell”进行全文搜索,并检查它们是否有相同的简单原因。
Sleak 似乎非常过时,我没有让它工作。 最终这也会对某人有所帮助。在您的 ui 代码中尽早添加以下代码:
Display.getCurrent().DEBUG = true;
Display.getCurrent().setTracking(true);
关闭/处置应用程序时的输出:
Summary: 930 Font(s), 50 Image(s)