【发布时间】:2019-10-30 14:34:59
【问题描述】:
在我们的 RCP 4 应用程序中,由于没有可用的句柄,我们抛出了 SWT 异常。这可能是由资源泄漏或正在运行的其他第 3 方应用程序引起的。我们无法在开发中重现此问题,因此我们希望记录任何可能帮助我们在未来解决此问题的信息。
我们想获取有关句柄的信息。例如。总句柄及其用途,例如图像、字体和合成。
我一直在查找此内容,并且正在努力寻找有关如何在 Java 中完成此操作的任何信息。我们可以执行命令行获取信息,但这感觉不是一个好方法。
Handles 我指的是 Windows 上的 GDI Handles 和 User Handles。
如何做到这一点?
plugin.xml
<plugin>
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
application="org.eclipse.e4.ui.workbench.swt.E4Application"
name="appid">
<property
name="modelResourceHandler"
value="bundleclass://a.model.resource.handler.ModelResourceHandler">
</property>
</product>
</extension>
</plugin>
【问题讨论】:
-
什么是“句柄”以及限制有多大差异,具体取决于您运行的平台。
-
我已经更新了问题。我的意思是 Windows 操作系统上的 GDI 和用户句柄。
-
对于使用 3.x 兼容层的 RCP,您可以使用 Eclipse Sleak(在this tutorlal 中描述)之类的东西。对于 e4 RCP,我什么都不知道。
-
@greg-449 不幸的是,我们的应用程序是纯 e4/RCP 4。Sleak 如何访问这些信息?这在代码中是可能的吗?
-
这是一小段易于阅读的代码see here。但它依赖于使用
DeviceData对象创建的 SWTDisplay-E4Application不会这样做。