Чтение параметров запуска Java JVM (например, -Xmx)

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

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


person Bob Albright    schedule 05.10.2009    source источник


Ответы (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. инструменты для использования в этой статье (из размышлений и предположений Дастина о разработке программного обеспечения), в том числе средство запуска приложений Java ссылается на:

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

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

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

person VonC    schedule 05.10.2009
comment
Работает как шарм! Я явно не знаю java.lang.management так хорошо, как должен. - person Bob Albright; 05.10.2009

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

java -XshowSettings:all

person Mike Duigou    schedule 17.01.2013