Чтение параметров запуска 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 на:

Этот метод использует преимущества платформы MXBean, доступной начиная с J2SE 5Java SE 6 была добавлена ​​поддержка пользовательских MXBeans).

Два полезных источника информации о параметрах JVM, доступных при использовании JVM от Sun:

Оба из этих ресурсов перечисляют и описывают некоторые / все двойные, не рекомендуемые для случайных разработчиков X аргументы (-XX), которые доступны.

С Java 7 или новее это так же просто, как

java -XshowSettings:all

Другие вопросы по тегам