У меня проблема с производительностью (в сложном коде Scala с использованием параллельных коллекций и фьючерсов). Я использовал JFR для проверки более подробной информации, и я вижу, что проблема проявляется как поток, ожидающий объекта монитора (поток, кажется, ожидает в java.util.concurrent.ForkJoinTask#internalWait
, вызывая метод wait
из ForkJoinTask
). Я хотел бы знать, какой поток содержит этот объект монитора (и из какой функции / стека вызовов был введен монитор). JFR показывает мне какой-то адрес для монитора, но я не нашел способа поиска / фильтрации по этому адресу.
введите описание изображения здесь
Есть ли какое-то представление в JM C, плагине или другом способе проверить, кто и когда блокирует и освобождает данный монитор?