Чтение параметров запуска Java JVM (например, -Xmx)
Я пытаюсь выяснить, есть ли способ определить свойства запуска JVM из запущенного процесса Java. В частности, я пытаюсь выяснить, где хранятся такие параметры, как -Xmx (максимальный размер кучи) и -XX:MaxPermSize. Я использую 1,6 JVM от Sun
Если вам интересно, почему я хочу это сделать, у меня есть несколько веб-серверов JVM, которые могут или не могут быть настроены правильно, и я хочу добавить это к проверке кода запуска. Мне гораздо проще зарегистрировать фрагмент кода Java, который развертывается повсеместно, чем вручную найти и проверить все файлы запуска jvm. В настоящий момент файлы конфигурации jvm, в лучшую или в худшую сторону, не являются частью нашего процесса сборки или проверены в системе контроля версий.
2 ответа
Пытаться:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;
public void runtimeParameters() {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
List<String> aList = bean.getInputArguments();
for (int i = 0; i < aList.size(); i++) {
System.out.println( aList.get( i ) );
}
}
Это должно показать все параметры JVM.
Примечание: у нас также нет параметра JVM в VCS, но есть в базе данных, которую читают наши собственные программы запуска в продуктах. Таким образом, мы можем изменить эти значения удаленно, без необходимости повторного развертывания настроек файла параметров JVM.
В этой статье вы найдете хорошее описание различных инструментов JVM, которые можно использовать в этой статье (из раздела "Размышления и разработки Dustin's Software Software Cogitations"), включая ссылки для запуска приложений Java на:
ManagementFactory.getRuntimeMXBean(
) вызовgetInputArguments()
Javadoc- Доступ к аргументам JVM из Java (чтобы определить, например, работает ли JVM в режиме отладки, чтобы изменить логику "инициализации сетки" приложения)
- Тип аннотации MXBean
- MXBean Java Tutorial
Этот метод использует преимущества платформы MXBean, доступной начиная с J2SE 5 (в Java SE 6 была добавлена поддержка пользовательских MXBeans).
Два полезных источника информации о параметрах JVM, доступных при использовании JVM от Sun:
- Коллекция опций JVM и
- Фавориты горячей точки Чарльза Наттера JVM.
Оба из этих ресурсов перечисляют и описывают некоторые / все двойные, не рекомендуемые для случайных разработчиков
X
аргументы (-XX
), которые доступны.
С Java 7 или новее это так же просто, как
java -XshowSettings:all