Профилирование Java: выясните, где потоки тратят время на блокировку

У меня есть многопоточное приложение, которое хорошо масштабируется с самого начала, но работает на сервере с 16 процессорами, когда я превышаю 5 или 6 аппаратных потоков, уровень производительности снижается. Я подозреваю , что узкое место связано с одним из синхронизированных методов. Однако мне нужно убедиться, что это виновный метод, прежде чем я начну погружаться в код и пытаться заменить алгоритм на неблокирующий.

Запуск Java с аргументом -Xprof говорит мне, что , как я и ожидал, потоки большую часть времени проводят заблокированными. Есть ли способ разбить это на то, сколько времени они проводят заблокированными в конкретном методе ?

5
задан Mala 12 November 2010 в 04:18
поделиться