1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Обсудим Xmx = Xms или Xmx > Xms?

Тема в разделе "Управление сервером Bukkit", создана пользователем Overwrite, 16 май 2022.

?

Так что же лучше?

  1. Xmx=Xms

    53,3%
  2. Xmx>Xms

    46,7%
  1. Автор темы
    Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    artcart
    Недавно я стал обсуждать с коллегами по цеху такую штуку как флаги запуска и столкнулся с тем, что у разных людей разное мнение по поводу того, нужно ли указывать в значениях Xmx и Xms одинаковые значения.

    Одна сторона говорит, что это нужно делать, ссылаясь на слова айкара, которые он сказал в своей статье с флагами.
    Вы никогда не должны запускать свой сервер в случае, если -Xmx может полностью запустить систему из-за нехватки памяти. Всегда следует ожидать, что ваш сервер будет использовать полный -Xmx!
    Затем вы должны убедиться, что у ОС есть дополнительная память поверх этого Xmx для вещей, не относящихся к уровню MC/OS. Следовательно, вы никогда не должны запускать MC с настройками -Xmx, которые вы не можете поддерживать, если java использует все это. Теперь это означает, что если -Xms ниже, чем -Xmx - У ВАС НЕИСПОЛЬЗУЕМАЯ ПАМЯТЬ! Неиспользуемая память — потерянная память.G1 (и, возможно, даже CMS до определенного порога, но я только констатирую то, в чем я уверен) работает лучше с большим объемом памяти. G1 адаптивно выбирает, сколько памяти выделить каждому региону, чтобы оптимизировать время паузы. Если у вас больше памяти, чем нужно для достижения оптимального времени паузы, G1 просто подтолкнет эту дополнительную память к старому поколению, и это не повредит вам (это может быть не так для CMS, но так для G1). Фундаментальная идея улучшения поведения GC состоит в том, чтобы гарантировать, что короткоживущие объекты умирают молодыми и никогда не получают повышения. Чем больше памяти у G1, тем больше у вас будет уверенности в том, что объекты не будут преждевременно переведены в старое поколение. G1 работает иначе, чем предыдущие сборщики, и может более эффективно обрабатывать большие кучи.

    Если ему не нужна данная ему память, он не будет ее использовать. Весь движок работает по-другому и не страдает слишком большими кучами, и это общепринятая в отрасли информация, что под G1 оставить Xms и Xmx одинаковыми!

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

    Установка одинакового минимального и максимального размера кучи обычно не является хорошей идеей, поскольку сборка мусора откладывается до тех пор, пока куча не заполнится. Поэтому при первом запуске GC процесс может занять больше времени. Кроме того, куча с большей вероятностью будет фрагментирована и потребует уплотнения кучи. Запустите приложение с минимальным размером кучи, который требуется вашему приложению. Когда GC запускается, он работает часто и эффективно, потому что куча мала.

    Решив затестить на серверах оба способа я не заметил вообще никаких отличий, помимо уменьшенного потребления памяти в общем при использовании меньших значений Xms.

    Было бы интересно услышать ваши идеи, по этому поводу и узнать, какие значения используете вы для запуска своих серверов и почему.
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Xms можно не указывать. Нет смысла удерживать резерв памяти, от этого производительность не вырастет. А свой минимум для работы java сама заберет.
     
    Последнее редактирование: 26 май 2022
  3. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Тут ведь ещё больше разных влияющих факторов, вплоть до того, какая версия Java и какой выбран GC, да и какое окружение.

    Если у тебя хост на котором просто разный софт крутится, в том числе и Java, лучше не выставлять Xms, чтобы остальным приложениям оставить пространство для маневра на случай пиковых ситуаций.

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

Поделиться этой страницей