我有两个版本的Java应用程序,它们使用不同的并发逻辑 我想分析和比较他们的表现(获得锁定的时间等),以便我可以使用更好的一个。
我找到了一个IBM Lock Analyzer for Java工具,但它既不是开源的,也不是JDK版本独立的 它需要IBM®提供的Java™SDK或JRE。
IBM的另一个工具是多核软件开发工具包,它有以下问题
“MSDK的测试和分析工具 除了锁之外,它在Sun JDK上运行 分析工具。性能工具 需要IBM JDK。“
那么有人可以推荐任何适用于Sun / Oracle Java的锁分析工具吗?
答案 0 :(得分:2)
这是一个技巧,我已经多次使用命令行在生产环境中找到锁争用:
watch -n1 'jstack [pid] | grep -A 1 BLOCKED | grep -v BLOCKED | grep -v \\-\\-'
它不仅免费,而且几乎没有开销。当然,它不会给你统计数据或一个漂亮的用户界面,但它会以可视方式显示实时锁定问题。基本上这是每秒采样以找到被阻塞的线程。如果有足够的服务器负载,您应该能够进行比较。
YourKit是一个很好的商业选择。