Подтвердить что ты не робот

Настройка параметров JVM во время выполнения

Можно ли изменить/изменить/добавить параметры VM после того, как JVM уже загружен (запущен)? Если да, то как я могу это сделать?

4b9b3361

Ответ 1

Для свойств, которые вы установили с помощью флага -D в командной строке, вы хотите System.setProperty. Например:

System.setProperty("propname", "hello world");

// ... later ...
String value = System.getProperty("propname");

Update:

Вы не можете включить отладку динамически, но вы можете включить отладку при запуске, но позже присоедините отладчик. Со следующим вы можете прослушивать порт 12345 и сразу запускать свою программу (через suspend=n). Затем вы можете прикрепить отладчик, если/когда вам нужно, отделить отладчик, снова подключиться и т.д.

-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12345

Конечно, это ухудшает производительность даже тогда, когда отладчик не подключен, поэтому он работает только в dev/test code, а не на производстве. Для этого вы хотите вести журнал, например. log4j.

Ответ 2

Короткий ответ заключается в том, что вы не можете изменять параметры VM во время выполнения. Класс Runtime предоставляет некоторые параметры такой максимальной памяти. Основные параметры, такие как максимальная память, должны устанавливаться только с помощью типа администратора, позволяющего управлять ресурсами, когда на машине существует несколько JVM. Если один JVM станет жадным и попросит много и много больше, чем он был назначен, это убьет это ограничение.