【问题标题】:Swing application slows down on multiple monitor configurationSwing 应用程序在多显示器配置上变慢
【发布时间】:2014-01-01 04:05:31
【问题描述】:

我在某些用户的机器上使用我的 swing 应用程序看到了一些有趣的行为。不知道有没有人遇到过类似的情况?

该应用占用大量内存,我们最近一直在使用 Xms==Xmx==512M 对其进行部署

有问题的用户机器是 Windows Xp 机器、4gb 内存、双核处理器和一个 512M NVidia NVS300 显卡。他们正在运行多个监视器设置;一个用户有 2 个,另一个有 4 个。

我们看到该应用在一段时间内运行良好。然后,由于某种原因,它变慢了 - 重新绘制变得非常缓慢,并且应用程序开始搅动 cpu。

问题是;如果您将屏幕拖到任何其他显示器上,则 CPU 使用率会下降,并且应用会再次开始正常响应。

我猜这是与内存有关的,因为当使用的堆增加时会发生这种情况,但是我无法解释原因。我们之前使用 -Xms256M 进行部署,据我所知,使用该配置运行时没有人报告此问题。

谁能帮忙解释一下可能发生了什么?

谢谢, 理查德

【问题讨论】:

  • 用户可以有多个框架,但我已经看到它只发生在一个框架上。顺便说一句,它使用 Jide 对接框架。
  • 在我看来更像是重绘问题而不是多显示问题。你确定你没有在你的绘制方法中集中创建对象并且从不释放引用吗?也许更多的显示器会放大效果......我肯定会在那里检查,或者让它在一台显示器机器上运行几天。
  • 我认为你应该检查你的回调函数。检查所有绘图方法,尽量避免在回调函数中分配内存和静态变量。同样的事情你需要检查你所有的渲染。几天前我在我们的应用程序中发现了类似的问题,即如果应用程序运行时间更长,它就会变慢。您还可以检查这些函数是否有繁重的计算,并尝试优化这些函数中的计算。
  • 您可以使用visualVM检查到底是什么问题,您可以轻松找到内存泄漏、线程泄漏、Cpu利用率等等,并且可以在您单击按钮或打开或关闭任何窗口时分析数据还有更多。我们还能够使用 VisualVM 捕获这些东西。您可以尝试一次。

标签: java swing graphics


【解决方案1】:

尝试禁用大部分不需要的 Direct 3D,并为我的应用程序带来巨大的性能提升。

-Dsun.java2d.d3d=false

Disabling 3D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-19
    • 2016-03-28
    • 2015-06-16
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多