Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 许多图形组件以何种方式影响Swing GUI的性能?_Java_Performance_User Interface_Swing_Profiling - Fatal编程技术网

Java 许多图形组件以何种方式影响Swing GUI的性能?

Java 许多图形组件以何种方式影响Swing GUI的性能?,java,performance,user-interface,swing,profiling,Java,Performance,User Interface,Swing,Profiling,我创建了一个JavaSwing应用程序,我意识到在一个表单上有许多组件 这并不是说我的界面是,但总数量可能相当高(数百),因为用户可以启用界面的其他部分,并且表单上必须有类似列表的重复面板 此外,许多组件被包装到一个组件中,再次增加了可视组件的数量 到目前为止,除了滚动和调整大小时出现滞后外,我还没有发现任何问题 元件数量是否有理论限制?(我对此表示怀疑,但我还必须用VB6编写代码,所以我去过那里…) 有什么实际限制吗?在工作中,我们有一些乍一看性能良好的中端工作站,但Java/Swing对低

我创建了一个JavaSwing应用程序,我意识到在一个表单上有许多组件

这并不是说我的界面是,但总数量可能相当高(数百),因为用户可以启用界面的其他部分,并且表单上必须有类似列表的重复面板

此外,许多组件被包装到一个组件中,再次增加了可视组件的数量

到目前为止,除了滚动和调整大小时出现滞后外,我还没有发现任何问题

  • 元件数量是否有理论限制?(我对此表示怀疑,但我还必须用VB6编写代码,所以我去过那里…)
  • 有什么实际限制吗?在工作中,我们有一些乍一看性能良好的中端工作站,但Java/Swing对低端工作站或极端数量的组件有何反应
  • 除了检查用户的主观印象之外,还有什么方法可以评测我的应用程序的GUI吗?有什么客观的指标我可以找吗(比如在
    javax.swing.swingcoreClasses中花费的总时间,其中包含Bottleneckcode
    或其他什么…)

只有内存和底层操作系统限制了组件的数量

实际限制有点用户主观。尝试将UI拆分为单独的选项卡或框架,这将限制每个屏幕的渲染开销

JVisualVM在分析java应用程序方面非常出色。您需要删除类过滤器才能查看对sun*和javax*类的概要分析

  • 理论上,您可以拥有任意数量的组件

  • 实际限制是RAM的数量。此外,当您有太多组件时,UI将开始变慢,因此性能也是一个问题(一如既往)。Java6会有所帮助

  • 对。您可以创建UI,然后在shell级别强制重新绘制(这样所有内容都会被绘制),并对其进行度量。使用探查器可以让您了解哪个组件特别慢


  • Swing可以处理大量只受内存限制的组件,特别是使用简单组件(文本框、标签、单选按钮等)。有一些技巧,例如减小窗口大小和将所有内容包装在JScrollPane中,但通常需要标准技术,例如在后台进行大量处理

    我的公司正在开发的一个功能包括一个带有重复JPanel的对话框,其中包含一些标签和一个按钮。我们在旧的MacMini(512mb内存的intel core solo)上测试了它,创建500个面板需要几秒钟的时间,但在那之后,滚动面板列表或添加新面板一点也不慢


    对于严重的性能问题,请查看针对显示大量数据进行了高度优化的。创建自定义渲染器和编辑器有点困难,但并非不可能。

    您能给我们一个窗口截图吗?不幸的是,我们公司的政策不允许这样做,因为这是一个未完成的产品。