4

我有两个版本的 Java 应用程序,它们使用不同的并发逻辑。
我想分析和比较它们的性能(例如获取锁的时间等),以便我可以使用更好的。

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

IBM 的另一个工具是 Multicore Software Development Kit,但存在以下问题

“MSDK的测试分析工具运行在Sun JDK上,除了锁分析工具。性能工具需要IBM JDK。”

那么任何人都可以推荐任何适用于 Sun/Oracle Java 的锁分析工具吗?

4

1 回答 1

2

这是我多次使用的一个技巧,用于从命令行查找生产环境中的锁争用:

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

它不仅免费,而且几乎没有开销。当然,它不会为您提供统计数据或漂亮的 UI,但是它以视觉方式使实时锁定问题变得明显。本质上,这是每秒采样一次以查找阻塞的线程。有了足够的服务器负载,您应该能够进行比较。

YourKit是一个不错的商业选择。

于 2011-03-22T11:30:27.547 回答