慢速Java Swing菜单的解决方法

Tom*_*aia 10 java swing menu

在Java 7和8中,Swing菜单中存在一个错误,当其他X11应用程序正在运行时,它会在X11上远程运行应用程序时导致速度变慢.这个问题是在Java 7中引入的,从未修复过.有没有人对解决方法有任何建议.使用nxclient解决了这个Swing菜单问题,但引入了自己不受欢迎的问题.

重现Swing菜单问题的步骤如下: - 使用某些活动在本地运行任何X11应用程序 - 使用ssh -Y someserver登录到远程服务器 - 执行运行Java 7或8的任何Java GUI应用程序(例如jvisualvm) - 选择菜单和观察几秒钟的响应延迟

小智 8

只花了一整天试图解决同样的问题.那里几乎没有任何信息.

本地机器:

  1. Linux FedoraCore 20,KDE桌面,NVIDIA GeForce 7300 LE
  2. Linux FedoraCore 20,KDE桌面,NVIDIA GeForce GT 720

通过ssh运行远程Java GUI,对于PC2,swing弹出窗口非常慢.桌面冻结,直到出现弹出窗口.另一方面,PC1运行非常快/平滑,完全没有问题.

事实证明,在我的情况下,问题是PC2有2个显示器.我能找到的最接近的错误报告是:JDK-8004103:sun.awt.X11.XToolkit.getScreenInsets()可能非常慢,看起来仍然是开放的.

临时解决方法:

  1. 在KDE中,禁用第二个监视器,启动应用程序,启用第二个监视器
  2. 在Gnome桌面工作(我的Gnome环境不受此问题的影响)
  3. 使用Java 6启动远程Java应用程序(Java6中不存在问题)

这些都不是理想的解决方法,但考虑到每次点击菜单项时我的桌面都会冻结3-4秒,他们会暂时这样做.