0

我正在开发一个独立的(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 线程等)。
4

2 回答 2

1

使用 Watchdog试用EventQueue。您在应用程序中安装了一个替代的 EventQueue。看门狗会告诉您哪些事件正在锁定您的 GUI。

于 2012-10-02T19:20:48.003 回答
0

原来是ESET。在每台安装了 ESET 的 Windows 机器上,我都遇到了这个问题。显然 ESET 具有默认开启的“协议跟踪”功能。一旦关闭,我们就再也没有这个问题。

于 2012-11-22T17:57:58.477 回答