【发布时间】:2012-09-02 13:22:00
【问题描述】:
我们使用 jvisualvm 分析了我们的应用程序,发现它在 Object.wait() 中花费了很多时间。
如何找到调用此方法的对象?
【问题讨论】:
-
wait是对象的静态成员吗?
-
Wait 是继承自 Object 的方法。它通常在并发对象尝试访问监视器时调用(即具有同步方法的类)。 JVM 通过调用 wait() 将第二个调用者置于等待状态。由于它不知道调用者的类型,它只能执行 Object.wait()
-
欢迎使用分析。 Here's what actually works 和 here's why。更多 reasons why.
-
这些链接很有趣,但对于许多应用程序应用程序来说,所描述的技术将是多余的。其次,Sun(现在的 Oracle)在 VisualVM 和 JConsole 上投入了大量精力,因此不使用它们是愚蠢的(以具有相同经验的人盯着 SIGKILL 生成的线程转储编写)。
-
@noahz:只要付出足够的努力就能让某件事变得有价值。真正归结为您对速度的需求有多严重,因为 SO 充满了问题和对此效果的评论:我的分析器令人困惑,但似乎没有向我显示任何瓶颈,所以我想我会假设没有。
标签: java debugging concurrency profiling