HTML Diff
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