SWT - 如何调试“没有更多句柄”

问题描述 投票:0回答:3

时不时地,我会被“org.eclipse.swt.SWTError:没有更多句柄”所困扰。我已经知道像 GDIView 这样的工具,可以观察分配的句柄数量,但现在我想知道是否有更好的方法来做到这一点。

有可用的工具吗?也许在创建句柄时记录所有堆栈跟踪?其中显示了两个调用点之间的新句柄?

问候, 丹尼尔

PS:添加了 windows 标签,因为开发主要发生在 Windows 上,并且仅 Windows 工具就足够了。

java windows swt handles
3个回答
3
投票

我发现了Sleak,这是一个调试 SWT 资源的好工具!强烈推荐给有同样问题的每个人。甚至还显示图片资源的图片!


0
投票

对我来说,问题只是 new Shell() 被调用得太频繁。将 shell 存储为静态成员并重用它会有所帮助。因此,在应用像 Sleak 这样的工具之前,其他人可能想要对“new Shell”进行全文搜索,并检查它们是否有相同的简单原因。


0
投票

Sleak 似乎非常过时,我没有让它工作。 最终这也会对某人有所帮助。在您的 ui 代码中尽早添加以下代码:

Display.getCurrent().DEBUG = true;
Display.getCurrent().setTracking(true);

关闭/处置应用程序时的输出:

Summary: 930 Font(s), 50 Image(s)

有关更多详细信息,请参阅设备类源代码:https://github.com/eclipse-platform/eclipse.platform.swt/blob/7479681ce2cd75b1adb10220d061d83e4f83e2cd/bundles/org.eclipse.swt/Eclipse%20SWT/cocoa/org/eclipse /swt/graphics/Device.java

© www.soinside.com 2019 - 2024. All rights reserved.