我正在开发一个独立(Swing)Java EE 客户端。应用服务器是JBoss 6.1.0。有些 Windows 工作站在客户端运行时会卡住,有些则不会。 32 位和 64 位 Windows 工作站都会卡住,并且某些 32 位和 64 位 Windows 工作站可以完美运行。客户端在Linux上运行良好,没有任何问题。
我按照 StackOverflow 的说明进行操作,人们建议使用 -Dsun.java2d.noddraw=true
禁用直接绘制。这没有帮助。
最让我困惑的是,有些工作站几乎是相同的 - 相同的 Windows 版本、相同的图形驱动程序、相同的 JRE,但有些工作正常,有些则不然。
该应用程序大量使用 Preferences API 来存储可停靠的各种位置(来自 Docking Frames 项目),它使用 JBoss 客户端类。
我正在调查是否可能是对 Windows 注册表的并发访问导致了此问题(如果您遇到类似问题,请告诉我)...
第一个猜测是 GUI 线程中的某个地方发生了竞争条件,并且 GUI 卡住了。但这只会卡住 GUI,而不会卡住整个 Windows。
机器一旦卡住,就会响应 ping,但 Windows 服务不起作用。
我希望任何可以帮助我解决问题的提示。
编辑:
- CPU 使用率始终在 10% 左右。
- 线程数永远不会超过 30,但并非所有线程都是守护线程(包括 AWT 线程、RMI 线程等)。
最佳答案
尝试 EventQueue with Watchdog 。您可以在应用程序中安装替代的 EventQueue。看门狗会告诉您哪些事件正在锁定您的 GUI。
关于java - 如何调试卡住 Windows 的 Java swing 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696623/