用于Java应用程序的锁分析器

我有两个版本的Java应用程序,它们使用不同的并发逻辑.
我想分析和比较他们的表现(获得锁定的时间等),以便我可以使用更好的一个.

我找到了一个IBM Lock Analyzer for Java工具,但它既不是开源的,也不是JDK版本独立的.
它需要IBM®提供的Java™SDK或JRE.

IBM的另一个工具是Multicore Software Development Kit,它有以下问题

“The testing and analysis tool of MSDK
runs on Sun JDK, except the lock
analysis tool. The performance tool
requires an IBM JDK.”

那么有人可以推荐任何与Sun / Oracle Java一起使用的锁定分析工具吗?

最佳答案
这是一个技巧,我已经多次使用命令行在生产环境中找到锁争用:

watch -n1 'jstack [pid] | grep -A 1 BLOCKED | grep -v BLOCKED | grep -v \\-\\-'

它不仅免费,而且几乎没有开销.当然,它不会给你统计数据或一个漂亮的用户界面,但它会以可视方式显示实时锁定问题.基本上这是每秒采样以找到被阻塞的线程.有足够的服务器负载,您应该能够进行比较.

YourKit是一个很好的商业选择.

转载注明原文:用于Java应用程序的锁分析器 - 代码日志