我有两个版本的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是一个很好的商业选择.