Интересно, возможно ли динамически обнаруживать взаимные блокировки в Java с помощью JVMTI.Существует два события, указывающих действия на мониторах с помощью оператора синхронизации:
Мониторинг указан Ввод
Отправляется, когда поток пытается войти в монитор языка программирования Java. уже получено другим потоком.
Указано, что монитор введен
Отправляется, когда поток входит в монитор языка программирования Java после ожидания его освобождения другим потоком.
Это означает, что в JVMTI я вижу только те мониторы, которые уже заблокированы.Я хотел восстановить график ожидания, но без событий, указывающих мне, что была получена блокировка, которая не удерживается любым потоком.Это невозможно.
Есть ли альтернативы?Команда SIGQUIT в Unix разрешает дамп потока, который отображает взаимоблокировки, кажется, что это невозможно в JVMTI.