Статистика синхронизации недоступна в API JVMTI? - PullRequest
0 голосов
/ 17 апреля 2011

Класс java.lang.ThreadInfo предоставляет несколько очень полезных методов, которые предоставляют статистику, касающуюся синхронизации в Java.Например:

getBlockedTime () Возвращает приблизительное накопленное истекшее время (в миллисекундах), которое поток, связанный с этим ThreadInfo, заблокировал для входа или повторного входа в монитор после мониторинга конфликта потоковвключен.[...]

getWaitedCount () Возвращает общее число раз, когда поток, связанный с этим ThreadInfo, ждал уведомления.[...]

Я не могу найти функции для доступа к этой информации из JVMTI API .Я пропускаю это или я должен собирать эту информацию сам?


Кроме того, из статистики синхронизации, кажется, вы даже не можете получить идентификатор Threads, который можно получить с помощью Thread.currentThread().getId();

1 Ответ

1 голос
/ 17 апреля 2011

Это не так просто, но я думаю, что вы можете прийти к заблокированному времени и подсчитать время ожидания с помощью событий JVMTI (см. События, относящиеся к "мониторам": "Мониторинг ввода" и "Мониторинг ожидания" и т. Д.).

Повторно идентификаторы потоков, нет, это не похоже, что JVMTI назначает их.С другой стороны, я не уверен, что идентификаторы, данные в ThreadInfo, фактически ссылаются на любой «реальный» идентификатор, назначенный O / S.

...