увеличение Java xmx динамично во времени выполнения

У меня есть jvm сервер в моей машине, теперь я хочу иметь 2 apservers моих нахождения в той же машине, однако я хочу, чтобы резервный выделил действительно низкий объем памяти с xmx, потому что его пассивное, одно, основной сервер (активные) движения вниз, я хочу выделить больше памяти своему пассивному серверу, который является уже, не перезапуская его (я имею, имеют их обоих имеющих слишком много xmx - отмечает, что они использовали бы память при запуске и я не могу позволить возможность outOfMemory).

Таким образом, я хочу пассивный - низкий xmx однажды активные движения вниз, я хочу, чтобы мое пассивное получило намного больше xmx.

есть ли способ для меня достигнуть этого.Спасибо

7
задан Jas 21 May 2010 в 17:40
поделиться

3 ответа

Было бы неплохо, но насколько я знаю, это не вариант с JVM, предоставляемыми Sun.

Параметр Xmx - указать максимальный объем памяти, он нужен для предотвращения использования JVM всей свободной памяти машины. Если вы хотите установить его выше, JVM не потребуется выделять всю эту память. Почему бы просто не установить для него очень большое число и позволить JVM со временем вырасти в него?

Чтобы убедиться, что ваша JVM не запускается с слишком маленьким объемом памяти (создавая множество пауз по мере увеличения объема памяти до требуемого size), настройте Xms на размер, который вы хотите выделить для JVM при запуске.

5
ответ дан 7 December 2019 в 01:17
поделиться

Короткий ответ: если ваша конкретная JVM не позволяет изменять эти значения после инициализации, вы не можете (я полагаю, что это случай с HotSpot).

Однако вы можете достичь своих целей, не меняя Xmx на лету.Например, вы можете использовать небольшую настройку -Xms , но оставить -Xmx относительно высоким. Если пассивный сервер не использует много памяти / генерирует мусор, по-прежнему работая в качестве резервной копии, то память останется около значения Xms . Однако, как только сервер резервного копирования возьмет на себя управление, ему будет разрешено расширять выделенную память до значения Xmx по мере необходимости.

См. java (windows) или java (* nix) в зависимости от ситуации (хотя -Xms и -Xmx имеют одинаковые общий смысл на всех платформах).

3
ответ дан 7 December 2019 в 01:17
поделиться

Вам не нужно настраивать Xmx на резервном экземпляре, пока он ничего не делает (или почти ничего), потому что он должен оставаться близким к значению, установленному с помощью Xms, до тех пор, пока он не начнет выполнять реальную работу.

Переключатель Xmx определяет максимальный размер кучи, который может потреблять экземпляр Java. Xms регулирует стартовую сумму.

Если вы установите Xms small на своем резервном экземпляре и Xmx на любой максимум, необходимый вашей программе, а затем переключитесь на резервный экземпляр (убивая обычный экземпляр), все должно работать нормально.

В зависимости от доступной памяти может потребоваться фактическая остановка / завершение обычного процесса Java, чтобы резервный процесс выделил всю кучу, которая ему нужна, по мере того, как он перемещается от начального более низкого размера кучи к максимальному.

2
ответ дан 7 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: