【问题标题】:Lock analyser for Java applicationJava应用程序的锁分析器
【发布时间】:2011-03-22 11:16:07
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我相信 YourKit 会为 Oracle Java 做到这一点。它也不是免费的,但您可以获得评估许可证。
  • 谢谢,看看 YourKit 是否满足我的要求。

标签: java locking analysis sun


【解决方案1】:

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

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

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

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

【讨论】:

  • 我会调查 YourKit。顺便说一句,您的方法仅适用于 linux 机器,我忘了提到我们可能需要分析的 linux 和 windows 应用程序。
  • 啊,好的。如果您对在负载下寻找锁争用的廉价方法感兴趣,则需要考虑两件事:1)您可以安装 Cygwin 来运行我建议的命令,或者 2)您仍然可以在 Linux 上分析您计划部署的应用程序视窗。毕竟是 Java :)
猜你喜欢
  • 2011-03-03
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2011-01-29
  • 2011-01-07
  • 2017-06-02
相关资源
最近更新 更多