У меня есть jvm сервер в моей машине, теперь я хочу иметь 2 apservers моих нахождения в той же машине, однако я хочу, чтобы резервный выделил действительно низкий объем памяти с xmx, потому что его пассивное, одно, основной сервер (активные) движения вниз, я хочу выделить больше памяти своему пассивному серверу, который является уже, не перезапуская его (я имею, имеют их обоих имеющих слишком много xmx - отмечает, что они использовали бы память при запуске и я не могу позволить возможность outOfMemory).
Таким образом, я хочу пассивный - низкий xmx однажды активные движения вниз, я хочу, чтобы мое пассивное получило намного больше xmx.
есть ли способ для меня достигнуть этого.Спасибо
Было бы неплохо, но насколько я знаю, это не вариант с JVM, предоставляемыми Sun.
Параметр Xmx - указать максимальный объем памяти, он нужен для предотвращения использования JVM всей свободной памяти машины. Если вы хотите установить его выше, JVM не потребуется выделять всю эту память. Почему бы просто не установить для него очень большое число и позволить JVM со временем вырасти в него?
Чтобы убедиться, что ваша JVM не запускается с слишком маленьким объемом памяти (создавая множество пауз по мере увеличения объема памяти до требуемого size), настройте Xms на размер, который вы хотите выделить для JVM при запуске.
Короткий ответ: если ваша конкретная JVM не позволяет изменять эти значения после инициализации, вы не можете (я полагаю, что это случай с HotSpot).
Однако вы можете достичь своих целей, не меняя Xmx на лету.Например, вы можете использовать небольшую настройку -Xms
, но оставить -Xmx
относительно высоким. Если пассивный сервер не использует много памяти / генерирует мусор, по-прежнему работая в качестве резервной копии, то память останется около значения Xms
. Однако, как только сервер резервного копирования возьмет на себя управление, ему будет разрешено расширять выделенную память до значения Xmx
по мере необходимости.
См. java (windows) или java (* nix) в зависимости от ситуации (хотя -Xms
и -Xmx
имеют одинаковые общий смысл на всех платформах).
Вам не нужно настраивать Xmx на резервном экземпляре, пока он ничего не делает (или почти ничего), потому что он должен оставаться близким к значению, установленному с помощью Xms, до тех пор, пока он не начнет выполнять реальную работу.
Переключатель Xmx определяет максимальный размер кучи, который может потреблять экземпляр Java. Xms регулирует стартовую сумму.
Если вы установите Xms small на своем резервном экземпляре и Xmx на любой максимум, необходимый вашей программе, а затем переключитесь на резервный экземпляр (убивая обычный экземпляр), все должно работать нормально.
В зависимости от доступной памяти может потребоваться фактическая остановка / завершение обычного процесса Java, чтобы резервный процесс выделил всю кучу, которая ему нужна, по мере того, как он перемещается от начального более низкого размера кучи к максимальному.