分析Java:找出线程花费时间被阻止的位置

Mal*_*ala 5 java multithreading profiling synchronized

我有一个多线程的应用程序,可以很好地扩展,但在16-cpu服务器上运行,一旦我超过5或6个硬件线程,性能水平关闭.我怀疑瓶颈围绕着其中一种同步方法.但是,在开始深入研究代码并尝试用非阻塞算法替换算法之前,我需要确定这是一种有罪的方法.

使用-Xprof参数运行Java 告诉我,正如我预期的那样,线程大部分时间都被阻塞了.有没有办法让我可以分解他们花在特定方法上的时间

ddi*_*rov 2

http://yourkit.com监视器视图将告诉您哪些锁类是热门的、谁持有竞争锁以及按锁实例和调用者堆栈进行细分。该工具有 30 天的评估期。