在 Java 7 和 8 中,Swing 菜单中存在一个错误,当其他 X11 应用程序正在运行时,Swing 菜单会导致通过 X11 远程运行应用程序时速度变慢。这个问题是在 Java 7 中引入的,并且从未得到修复。有没有人对解决方法有任何建议。使用 nxclient 解决了这个 Swing 菜单问题,但引入了它自己不受欢迎的问题。
重现 Swing 菜单问题的步骤是: - 通过一些 Activity 在本地运行任何 X11 应用程序 - 使用 ssh -Y someserver 登录远程服务器 - 执行任何运行 Java 7 或 8 的 Java GUI 应用程序(例如 jvisualvm) - 选择一个菜单并观察几秒钟的响应延迟
最佳答案
刚花了一整天试图解决同样的问题。那里几乎没有任何信息。
本地机器:
- Linux FedoraCore 20、KDE 桌面、NVIDIA GeForce 7300 LE
- Linux FedoraCore 20、KDE 桌面、NVIDIA GeForce GT 720
通过 ssh 运行远程 Java GUI, Swing 弹出窗口对于 PC2 来说非常慢。桌面卡住,直到出现弹出窗口。另一方面,PC1 运行非常快/流畅,完全没有问题。
事实证明,就我而言,问题在于 PC2 有 2 个显示器。我能找到的最接近的错误报告是:JDK-8004103 : sun.awt.X11.XToolkit.getScreenInsets() may be very slow而且它似乎还开着。
临时解决方法:
- 在 KDE 中,禁用第二个显示器,启动应用程序,启用第二个显示器
- 在 Gnome 桌面上工作(我的 Gnome 环境不受此问题影响)
- 使用 Java 6 启动远程 Java 应用程序(Java6 中不存在此问题)
这些都不是理想的解决方法,但考虑到每次我单击菜单项时我的桌面都会卡住 3-4 秒,暂时可以使用它们。
关于java - 慢速 Java Swing 菜单的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26002948/