0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: jinfo, java-процесс, jconcole, system properties</p>
1
<p>Теги: jinfo, java-процесс, jconcole, system properties</p>
2
<p>Бывает такое, что во время "боевой" эксплуатации java-приложения появляется потребность посмотреть параметры java-процесса. Порой надо узнать, с какими параметрами приложение было запущено, определить значения переменных окружения и другую подобную информацию. В Java-мире для решения задач мониторинга есть множество интересных инструментов. Сегодня мы рассмотрим один из них. Это jinfo.</p>
2
<p>Бывает такое, что во время "боевой" эксплуатации java-приложения появляется потребность посмотреть параметры java-процесса. Порой надо узнать, с какими параметрами приложение было запущено, определить значения переменных окружения и другую подобную информацию. В Java-мире для решения задач мониторинга есть множество интересных инструментов. Сегодня мы рассмотрим один из них. Это jinfo.</p>
3
<p>Сегодня "подопытным кроликом" будет популярная утилита<strong>jconcole</strong>. Допустим, jconcole - это некий java-процесс, информацию о котором мы хотим получить.</p>
3
<p>Сегодня "подопытным кроликом" будет популярная утилита<strong>jconcole</strong>. Допустим, jconcole - это некий java-процесс, информацию о котором мы хотим получить.</p>
4
<p>Первое, что надо сделать - получить pid (т. е. идентификатор процесса jconcole). Делаем это так:</p>
4
<p>Первое, что надо сделать - получить pid (т. е. идентификатор процесса jconcole). Делаем это так:</p>
5
<p>В моем случае pid - 5653.</p>
5
<p>В моем случае pid - 5653.</p>
6
<p>Зная pid, на jconcole можно "натравить" jinfo. Делается это так:</p>
6
<p>Зная pid, на jconcole можно "натравить" jinfo. Делается это так:</p>
7
<p>Тут всё просто, jinfo в качестве параметра надо передать pid процесса, о котором нам нужна информация.</p>
7
<p>Тут всё просто, jinfo в качестве параметра надо передать pid процесса, о котором нам нужна информация.</p>
8
<p>Jinfo в консоль напечатает много интересной информации о процессе.</p>
8
<p>Jinfo в консоль напечатает много интересной информации о процессе.</p>
9
<p>Например, это:</p>
9
<p>Например, это:</p>
10
<ul><li>"java.runtime.version" и "java.home" - jvm, которую использует процесс. Часто в старых системах на серверах зоопарк jvm, и не понятно, кто что использует;</li>
10
<ul><li>"java.runtime.version" и "java.home" - jvm, которую использует процесс. Часто в старых системах на серверах зоопарк jvm, и не понятно, кто что использует;</li>
11
<li>"java.io.tmpdir" и "user.dir" - показывают, куда наиболее вероятно процесс может сохранять какие-то файлы;</li>
11
<li>"java.io.tmpdir" и "user.dir" - показывают, куда наиболее вероятно процесс может сохранять какие-то файлы;</li>
12
<li>"java.class.path" - показывает, откуда процесс загружает библиотеки;</li>
12
<li>"java.class.path" - показывает, откуда процесс загружает библиотеки;</li>
13
<li>"Command line" - параметры командной стоки, с которыми стартовало приложение.</li>
13
<li>"Command line" - параметры командной стоки, с которыми стартовало приложение.</li>
14
</ul><p>Отдельно хочется остановиться на<strong>system properties</strong>, ведь не всегда эти значения легко узнать.</p>
14
</ul><p>Отдельно хочется остановиться на<strong>system properties</strong>, ведь не всегда эти значения легко узнать.</p>
15
<p>В случае с jconsole при старте определяется system property "application.home". Jinfo выводит текущее значение system properties, т. е. если во время работы приложения system properties изменилось,<strong>jinfo выведет актуальное значение</strong>.</p>
15
<p>В случае с jconsole при старте определяется system property "application.home". Jinfo выводит текущее значение system properties, т. е. если во время работы приложения system properties изменилось,<strong>jinfo выведет актуальное значение</strong>.</p>
16
<p><strong>Jinfo</strong>- интересная и полезная утилита диагностики, однако надо знать, что сейчас статус этой утилиты - "экспериментальная". Т. е. она может работать, а может и с такой ошибкой падать: "can't determine target's VM version : field "_reserve_for_allocation_prefetch" not found in type Abstract_VM_Version".</p>
16
<p><strong>Jinfo</strong>- интересная и полезная утилита диагностики, однако надо знать, что сейчас статус этой утилиты - "экспериментальная". Т. е. она может работать, а может и с такой ошибкой падать: "can't determine target's VM version : field "_reserve_for_allocation_prefetch" not found in type Abstract_VM_Version".</p>
17
<p>Если у вас jinfo не заработает, не забывайте про "стабильную классику" -<strong>jconcole</strong>.</p>
17
<p>Если у вас jinfo не заработает, не забывайте про "стабильную классику" -<strong>jconcole</strong>.</p>
18
18