在 Java 7 和 8 中,Swing 菜单中存在一个错误,导致在其他 X11 应用程序正在运行时通过 X11 远程运行应用程序时速度缓慢。这个问题是在 Java 7 中引入的,并且从未得到修复。有人对解决方法有任何建议吗?使用 nxclient 可以解决 Swing 菜单问题,但也会带来一些不受欢迎的问题。
重现 Swing 菜单问题的步骤是:
- 通过一些活动在本地运行任何 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() 可能非常慢 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8004103而且它似乎仍然开放。
临时解决方法:
- 在 KDE 中,禁用第二个监视器,启动应用程序,启用第二个监视器
- 在 Gnome 桌面中工作(我的 Gnome 环境不受此问题影响)
- 使用 Java 6 启动远程 Java 应用程序(Java6 中不存在问题)
这些都不是理想的解决方法,但考虑到每次单击菜单项时我的桌面都会冻结 3-4 秒,暂时可以使用它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)