Чтение параметров запуска Java JVM (например, -Xmx) - PullRequest
46 голосов
/ 05 октября 2009

Я пытаюсь выяснить, есть ли способ определить свойства запуска JVM из запущенного процесса Java. В частности, я пытаюсь выяснить, где хранятся такие параметры, как -Xmx (максимальный размер кучи) и -XX: MaxPermSize. Я использую 1,6 JVM от Sun.

Если вам интересно, почему я хочу это сделать, у меня есть несколько веб-серверов JVM, которые могут быть настроены или не настроены правильно, и я хочу добавить это к проверке кода запуска. Мне гораздо проще зарегистрировать фрагмент кода Java, который развертывается повсеместно, чем вручную найти и проверить все файлы запуска jvm. В настоящий момент файлы конфигурации jvm, к лучшему или худшему, не являются частью нашего процесса сборки и не проверяются на управление исходным кодом.

Ответы [ 2 ]

53 голосов
/ 05 октября 2009

Попробуйте:

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 для использования (из "Размышления и спецификации Дастина по разработке программного обеспечения" ), включая Java Application Launcher ссылки на:

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

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

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

10 голосов
/ 17 января 2013

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

java -XshowSettings:all

...