我们有一个Java客户端/服务器应用程序,其GUI定期(每半小时)平均无响应2到10秒。在不同的按钮上单击仅在挂起几秒钟后才会生效。

我最初以为有一个GC问题,但是调查证明这方面没有错。

我更确信这是一个线程问题,图形线程有时会阻塞。

如何检查图形线程的状态以在日志中见证其“无响应”?我想我可以每秒钟左右从另一个线程检查其状态,但是该怎么做呢?要轮询哪个变量?

关于如何解决这个问题还有其他想法吗?

谢谢

最佳答案

您可以向Java进程(在Windows上等效)发出kill -QUIT,这将导致所有线程将其堆栈跟踪信息转储到STDOUT,因此您可以查看正在发生的情况。这也显示了哪些线程正在持有锁(同步块(synchronized block)),哪些正在等待。

10-04 23:25