SWT 使用操作系统资源,但限制是什么以及如何分析它?

SWT uses operating system resources, but what is the limit and how to profile that?

SWT 使用操作系统资源,因此 SWT 内存消耗不依赖于堆 (xms xms) 和非堆(元空间)。如果我在这一点上错了,请纠正我。

P.S.: 我使用 Sleak 来跟踪应用程序当前使用的图形对象的数量

Baz mentioned, the maximum number of GDI handles, which is specific to Windows, influences how many resources a (SWT) process can allocate. See the this question 了解更多详情。在其他平台上,限制可能不同。

如您所知,SWT Sleak 是监视 SWT 应用程序图形资源使用情况的正确工具。

如果一个应用程序用完了句柄,它不仅仅是 'crash'。达到限制并尝试创建新资源时会引发 SWTError

一般来说,可以像处理任何其他异常一样处理异常,释放未使用的资源后,可以创建新资源。

IIRC,RCP 应用程序的默认异常处理程序将打开一个对话框,要求用户在这种情况下正常退出应用程序。

但是,运行 SWT 应用程序中的句柄不足通常表明您的小部件策略 created/used 是错误的。

减少资源数量的常见策略是使用 lazy/virtual Trees 和 Tables 并仅在小部件可见时创建小部件,在不可见时丢弃它们需要更长的时间。例如,在 TabFolder 中,您将推迟填充 TabItem,除非它被选中。