Получить обнаружение взаимоблокировки из запущенной программы или дампа в Java
У меня есть часть запущенного программного обеспечения Java, которое застряло. Я хотел бы получить представление внутри, но понятия не имею, как это сделать.
Есть ли какой-нибудь инструмент, который я могу дать PID, и он скажет мне, где в настоящее время находится каждый поток и, возможно, также несколько значений переменных? Я использую Linux.
Я более или менее знаю, что является причиной проблемы, но есть еще несколько возможных случаев, для которых было бы точно определить, было бы хорошо.
Я не могу воспроизвести ошибку, потому что она появляется только раз в несколько дней и никогда не появлялась во время отладки, так что это уникальная возможность узнать врага.
Есть идеи?