java - 如何调试卡住 Windows 的 Java swing 应用程序?

标签 java windows swing freeze

我正在开发一个独立(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/

相关文章:

java - 清除特定的数组列表而不是它的所有副本

r - 编写与操作系统无关的文件路径

python - 如何在启动 Google App Engine Launcher 时禁用自动检查更新?

java - 获取Java2D对象位置(不是角落)

Java Swing - 使用向上和向下按钮循环遍历数组并将其打印在文本字段中

java - Firebase 性能 - Crashlytics

java - 在实例化一个类的同时编写它?

java - re 匿名内部类的多个实例

windows - 搜索维护的二进制差异/补丁工具或库

java - 如何在面板中添加滚动 Pane