В настоящее время есть некоторые профилировщики, которые обещают профилировать параллельное поведение выполнения программы, чтобы понять многопоточное выполнение.
Я собираю функции, которые были бы полезны для профилировщика Java, сосредоточенного только на профилировании параллелизма:
Что я собрал на данный момент:
построение графиков ожидания для выявления потенциальных тупиковых ситуаций
измерение времени доступа к ресурсам (структурам данных и т. д.)
показать состояния каждого потока (активен, прерван, мертв)
какой поток вызвал какой поток для доступа к общим ресурсам (ожидание, блокировка и т. д.)
Какие идеи у вас есть? Лично я стремлюсь выявить некоторые вредные привычки программирования при работе с параллелизмом в Java.