【发布时间】:2012-01-12 21:34:15
【问题描述】:
我正在开发一个旨在以全屏模式运行的 Java 程序。它使用大量定制的 Swing 组件和 Java2D 绘制的组件,这些组件需要每秒更新和重新绘制几次。它在我动力不足的工作 PC 上运行得相对较好。
但后来我在家里用功能更强大的 PC 进行了试用。它的运行速度明显变慢。触发一个本应立即更新大约 20 个不同屏幕元素的事件反而导致了一种效果,即每个元素似乎都需要至少四分之一秒才能重新绘制自己。因此,完成每个屏幕更改需要 5 秒钟,而不是瞬时更改。
我想可能是我尝试重绘过于频繁或以错误的方式重绘。但是在尝试了一些其他想法之后,我凭直觉让应用程序以窗口模式而不是全屏模式启动。有了这一变化,一切都开始变得非常快速和顺利。
所以我想这里真的有两个问题:为什么全屏模式会导致这个问题?为什么它只会在我更快的计算机上引起这个问题?我确实怀疑存在与操作系统相关的错误。我的慢速工作计算机是 Windows XP,而家用计算机是 Windows 7。我在其他线程中看到 Win7 上的 Aero 会导致 Java 速度问题,所以我尝试禁用它。这确实导致了速度的小幅提升,但仍然不如我在窗口模式下运行时那么流畅。有没有其他人在 Win7 上运行全屏 Java 应用程序时遇到性能问题?如果是这样,是否有解决方法?
【问题讨论】:
-
对我来说听起来很熟悉...我觉得这是因为从正常窗口扩展状态(比如说从 640x480 到 1440x900)提高了全屏屏幕分辨率,我观察到越来越内存以适应全屏的 Swing 绘画作业。改回正常的窗口扩展状态就可以了。但是,它可以是特定于硬件的(有或没有专用 GPU 的系统)
-
@Mike O 你如何从代码本身中关闭direct3d?
标签: java performance fullscreen