Какие бесплатные инструменты доступны для анализа конкуренции за блокировку в Java? - PullRequest
5 голосов
/ 25 июня 2009

Мне нужно определить, какие блокировки наиболее востребованы в коде моего приложения. Какие бесплатные инструменты я могу использовать, чтобы определить это?

Ответы [ 5 ]

4 голосов
/ 25 июня 2009

вы можете использовать jconsole или jstack в каталоге bin вашего JDK. В частности, jconsole позволяет вам подключаться к вашему процессу и отслеживать потоки, включая ресурсы, которые они заблокировали, и может помочь вам определить состояние взаимоблокировки.

3 голосов
/ 25 июня 2009

Вы также можете просмотреть это в отладчике Eclipse. В представлении «Отладка» используйте небольшое меню в виде треугольника на панели инструментов представления, чтобы включить «Java-> Показать мониторы».

При подозрении на взаимоблокировку приостановите приложение (выберите приложение в представлении отладки и нажмите кнопку паузы на панели инструментов представления отладки), и если возникнет тупик, потоки блокировки станут красными. Если вы развернете эти потоки, вы увидите конфликт блокировки.

2 голосов
/ 25 июня 2009

Если вы владеете кодом, вы можете создать / найти реализацию Lock, которая собирает статистику конфликтов. Если нет, попробуйте инструменты, предложенные в других статьях.

2 голосов
/ 25 июня 2009

JDK имеет некоторую встроенную поддержку - под unix, kill -3 процесс, под windows, ctrl-break. Это отобразит полный дамп потока, после чего будут обнаружены любые взаимоблокировки. Кроме того, в ветке dusmp вы можете видеть, какие потоки принадлежат каким потокам, и сравнивать их друг с другом.

2 голосов
/ 25 июня 2009

VisualVM (часть Java 1.6) ( см. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...