Как JPS, другие инструменты мониторинга Java, собирают данные о локальных JVM? - PullRequest
0 голосов
/ 26 октября 2011

Я столкнулся с проблемой, которая очень похожа на другой вопрос SO ( jps не возвращает никакого вывода, даже когда процессы Java работают ). Прежде чем прочитать этот вопрос, я подумал, что моя проблема в том, что jstatd не запущен, но решение этого вопроса подразумевает, что jps использует какие-то временные файлы. Я также понял, что можно отслеживать локальные JVM без какой-либо сетевой активности, и мне интересно, как это работает. Я не прошу решения моей проблемы, я просто хочу знать, как jps и другие работают локально. Меня удивляет, что я совсем не знаю этого после стольких лет, проведенных в разработке Java.

1 Ответ

1 голос
/ 27 октября 2011

В случае локального использования реализацией MonitoredHost по умолчанию является sun.jvmstat.perfdata.monitor.protocol.local.MonitoredHostProvider, который использует sun.jvmstat.perfdata.monitor.protocol.local.LocalVmManager . Это метод activeVms (), когда выполняется настоящая работа, он просматривает файлы во временных пользовательских каталогах, ища файлы с известным форматом имени файла, где запущенные JVM публикуют свои данные мониторинга. Нет TCP вообще, как я подозревал. Интересно.

...