哪些免费工具可用于分析java中的锁争用?

时间:2009-06-25 13:01:58

标签: java multithreading locking

我需要确定哪些锁在我的应用程序代码中最具争议性。我可以使用哪些免费工具来确定这一点?

5 个答案:

答案 0 :(得分:4)

您可以在JDK的bin目录中使用jconsole或jstack。特别是jconsole允许您连接到您的进程并监视线程,包括它们锁定了哪些资源,它可以帮助您识别死锁状态。

答案 1 :(得分:3)

你也可以在eclipse的调试器中查看。在Debug视图中,使用视图工具栏上的小三角形菜单打开“Java-> Show Monitors”。

当您怀疑死锁时,暂停应用程序(在调试视图中选择应用程序并按调试视图工具栏上的暂停按钮),如果出现死锁,阻塞线程将变为红色。如果展开这些线程,则可以看到锁争用。

答案 2 :(得分:2)

VisualVM(Java 1.6的一部分)(see

答案 3 :(得分:2)

JDK有一些内置的支持 - 在unix下,kill -3进程,在windows下,ctrl-break。这将显示完整的线程转储,然后检测到任何死锁。另外,在线程dusmp中你可以看到哪些线程拥有什么锁,并将它们相互比较。

答案 4 :(得分:2)

如果您拥有代码,则可以创建/查找收集争用统计信息的Lock实现。如果没有,请尝试其他帖子中建议的工具。