Забивается оперативная память на сервере майнкрафт
Когда играю в Майн, зависает игра резко на пару секунд, заметил что проблема связанна с тем, когда озу накапливается очень много, майн её сбрасывает и в этот момент происходит фриз на пару секунд, раньше была такая же проблема, но решалась уменьшение количества озу для майна, сейчас это не помогает
Действительно, такая проблема есть. Заключается она в срабатывании так называемого "сборщика мусора". Чтобы понять, что это такое, и как бороться с этой проблемой, надо разобраться с тем, как работает сборщик.
Чтобы процессору обработать какие-то данные, их сначала надо загрузить в оперативную память. В процессе вычислений процессор по частям подгружает эти данные в свой кэш, а затем возвращает результат в ту же оперативную память. При этом, старые данные никуда не деваются и продолжают храниться в ОЗУ. Отсюда появляется рост занимаемой игрой памяти с течением времени, который можно наблюдать в меню отладки, или более наглядно при помощи мода Memory Usage Screen.
Когда количество занятой оперативной памяти достигает определённого предела, срабатывает сборщик мусора. Это алгоритм, который отличает старые хранящиеся в ОЗУ отработавшие данные от необходимых программе в данный момент и производит их удаление. Этот процесс всегда характеризуется полной остановкой всех вычислений, из-за чего игра и зависает.
Интересно, что чем меньше выделен объём ОЗУ, тем быстрее он забивается остатками вычислений (входными данными для процессора), однако при низких значениях выделенной памяти ͟п͟р͟о͟л͟а͟г͟а͟ ͟н͟е͟ ͟п͟р͟о͟и͟с͟х͟о͟д͟и͟т.
Почему же? Дело в том, что чем меньше ОЗУ выделено для JVM, тем быстрее сборщик мусора его обрабатывает. То есть, сборщик мусора работает ͟ч͟а͟щ͟е͟,͟ ͟н͟о͟ ͟б͟ы͟с͟т͟р͟е͟е. При больших же значениях выделенной памяти сборщик мусора обрабатывает весь объём ОЗУ редко, но долго, создавая характерное зависание.
Именно поэтому нужно соблюсти идеальный баланс между выделенной ОЗУ и временем его чистки. Но важно помнить, что когда ОЗУ выделено настолько мало, что Майнкрафт не может просчитать тик сервера без очистки мусора, игра начинает сильно виснуть и вылетает.
͟Ч͟т͟о͟ ͟с͟ ͟э͟т͟и͟м͟ ͟д͟е͟л͟а͟т͟ь͟?
Настройка запуска игры с определённым сборщиком мусора довольно проста – нужно лишь указать его в параметрах запуска JVM (примеры параметров JVM в комментариях). В официальном лаунчере это делается здесь:
А TLauncher Legacy и так по умолчанию использует ConcMarkSweepGC, нужно просто удостовериться, что в настройках стоит эта галочка:
Конечно, я очень сильно упростил этот материал. Если вы хотите разобраться в этом более подробно, можно ознакомиться с этой статьёй.
Пара слов о сборщиках мусора. Каждый из них обладает своим "поведением" и подходом к работе с ОЗУ. Постараюсь дать ссылки на каждый сборщик по отдельности. Общая статья по сборщикам и их параметрам: [Доступные сборщики мусора в Java
]
[G1] (аргументы по умолчанию)
-Xmx3G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
[Shenandoah]
-Xmx4G -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -XX:MaxGCPauseMillis=50
[ConcMarkSweep] (Не работает в Java 16)
-Xmx4G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M
[Z]
Важно: при малом объёме выделенной ОЗУ (2Гб) сборщик не справлялся со своей задачей, вызывая ежесекундные зависания игры.
-Xmx4G -XX:+UnlockExperimentalVMOptions -XX:+UseZGC
Можно добавить -XX:ConcGCThreads=4 (количество процессов для сбора мусора)
Александр Иванов, красавчик, всё хорошо расписал, мне очень понравилось, но у меня краш при любых аргументах( Не знаешь в чём дело? Вылезает Error: Could not create the Java Virtual Machine. Error: Afatal exception has occurred. Program will exit.
Ваш браузер устарел, и поэтому некоторые важные функции этого сайта могут не работать. Пожалуйста, обновитесь то более современного браузера. :(
Проблемы и решения
Главное, что нужно понимать, — все, что касается обработки игрового мира будет обрабатываться только на одном вычислительном ядре физического сервера. Так что если вдруг у вас прекрасный сервер с десятком вычислительных ядер, то загружено будет только одно. Все остальные будут фактически простаивать. Такова уж архитектура приложения, и ничего вы с этим поделать не сможете. Так что при выборе сервера следует обращать внимание не на количество ядер, а на тактовую частоту. Чем она будет выше, тем лучше будет производительность.
Что касается вопроса об объеме оперативной памяти, тут следует исходить из следующих показателей:
- планируемое количество игроков;
- планируемое количество миров на сервере;
- размер каждого мира.
Для запуска серверной части рекомендуем воспользоваться флагами, указанными в статье Tuning the JVM – G1GC Garbage Collector Flags for Minecraft. Эта «черная магия» позволяет серверу грамотно настроить «сборщик мусора» и оптимизирует использование оперативной памяти. Не стоит выделять памяти больше, чем реально потребляет сервер при пиковом наплыве игроков.
PaperMC
Казалось бы, все круто, и Spigot стал прекрасным вариантом. Но некоторым энтузиастам этого показалось мало, и они запилили свой собственный форк Spigot «на стероидах». На странице проекта ключевым достоинством указано, что “It's stupid fast”. Развитое коммьюнити позволяет оперативно решать возникающие вопросы, а расширенное API — делать интересные плагины. Запустить PaperMC можно одной простой командой, приведенной в документации.
С совместимостью у PaperMC все прекрасно, так что написанные плагины под SpigotMC легко заработают и на PaperMC, но без официальной поддержки. Обратная совместимость со SpigotMC также присутствует. Теперь, когда мы перечислили различные варианты создания сервера, перейдем к тем проблемам производительности, которые могут возникать.
Резкий сброс использованной ОЗУ
scharyu
Играю на собственном сервере (арендую хостинг) на сборке с модами (1.7.10). Буквально недавно появилась весьма интересная проблема: кратковременные фризы со строгим интервалом. Поясняю этапами, чтобы было яснее:
1. Кол-во использованной ОЗУ: ~950 МБ (+- 3 МБ).
2. Размер использованной ОЗУ растет прямолинейно. Буквально возрастает по 1 МБ, в сумме около 150 МБ/сек.
3. Достигает максимальной отметки в строго 1370 МБ.
4. Резкий сброс до ~950 МБ (+- 3 МБ).
5. Повтор цикла.
Из-за такого цикличного сброса ОЗУ в ~450 МБ каждые 6 секунд, происходит резкий сброс ФПС примерно в 100-120 ФПС (прим. со 287 до 160). Как бы грех жаловаться на 160 ФПС, но дело не в самих кадрах в секунду, а в именно резком циклическом сбросе на такое огромное значение, что вызывает сильный фриз на где-то полсекунды. А когда таковое происходит каждые 6 секунд, это начинает мешать.
Итак, что делать? Как решить проблему?
ОЗУ: 16 ГБ. Выделено в Java и TLauncher'е (через него работает сборка) - 16 ГБ. Собственно в игре также показывает 16384 МБ.
Не знаю, какие данные вам еще нужны, потому пишите: предоставлю все, что смогу.
south_park
Администраторы
Звание: Чоткий паря
Насколько я понимаю, принцип игры подразумевает использование определенного максимального количества оперативной памяти, после чего очистка памяти от "мусора", каких то отработанных данных, кеша, подробнее не скажу. Отсюда и резкая очистка памяти, и чем большем модов, тем выше будет расти счетчик и сильней сбрасываться.
Специально посмотрел на поведение игры у меня, если ограничение стоит на 1300мб, то игра расходует до ~1100 после чего сбрасывает до примерно 750-900, выделив игре 3 гб ничего не изменилось и подобное поведение я видел всегда, если смотреть в одну точку набор оперативки происходит медленнее, если вертеть головой - быстрее.
Насчет фризов, тут сказать сложно, есть моды для дебага которые позволят залогировать игру и попытаться найти, что именно вызывает задержки, лично сам выкладывал несколько подобных модов.
Вероятно виноват мод который заново просчитывает какие то объекты, так просто сказать невозможно.
Есть предположение, что виноват лаунчер, да, как бы странно это не выглядело, но в лаунчере, в ТЛ и тлаунчер есть так называемая консоль событий игры, стандартно она отключена, но видимо какой то процесс лаунчера все равно с ней работает, в общем, не знаю как сейчас, но ранее я ловил ТЛ лаунчер на дикие фризы игры на некоторых картах с большим количеством командных блоков которые валили в лог кучу информации.
Подобные проблемы были и у нас в лаунчере, но мы сделали несколько уровней логирования если можно так сказать.
Ни разу не гоню на лаунчер, но лично я сталкивался с подобным, потому стоит проверить.
Генерация карты блоков
“Вы действительно считаете, что Луна существует, только когда вы на неё смотрите?” (Альберт Эйнштейн)
Абсолютно новый сервер. Как только игрок первый раз успешно подключается, игровой персонаж появляется на общей точке сбора (спаун). Это единственное место, где игровой мир предварительно генерируется сервером. В этот же момент клиентская часть смотрит в настройки, и ключевым параметром является дальность прорисовки. Измеряется она в чанках (область карты 16x16 и высотой в 256 блоков) Сколько чанков там указано, именно столько и будет запрошено у сервера.
На сервере хранится глобальная карта мира, и если в ней еще нет сгенерированных блоков в точке появления игрового персонажа, то сервер их динамически генерирует и сохраняет у себя. Мало того, что это требует больших вычислительных ресурсов, так еще и постоянно увеличивает размер карты мира. На одном из старейших анархических серверов 2b2t (2builders2tools) размер карты уже превысил 8 Tb, а граница мира проходит на отметке в 30 млн блоков. С этим сервером связаны тысячи историй, и он заслуживает отдельной статьи серии статей.
Генерация мира вокруг одного игрока — не проблема. Генерация мира вокруг сотни игроков вызовет незначительные тормоза сервера на протяжении короткого времени, после чего нагрузка снизится. Генерация мира на дальность прорисовки клиента вокруг тысячи игроков уже способна «уронить» сервер и повыбрасывать с него всех клиентов по таймауту.
В серверном ПО имеется такое значение, как TPS (Ticks per Server — тактов в секунду). Штатно 1 такт равен 50 мс. (1 секунда реального мира равна 20 тактам игрового мира). Если обработка одного такта вырастет до 60 секунд — серверное приложение будет закрыто, выкинув всех игроков.
Выход — ограничить мир определенными координатами и выполнить предварительную генерацию блоков. Тем самым мы снимаем необходимость динамической генерации в процессе игры, и серверу будет достаточно прочитать уже существующую карту. Оба вопроса решаются одним-единственным плагином WorldBorder.
Проще всего задать границу мира в виде окружности относительно точки спауна (хотя можно ее сделать любой формы) одной командой:
Если игровой персонаж попытается пересечь границу, то будет отброшен на несколько блоков назад. Если это проделать несколько раз за ограниченное время, то нарушитель будет принудительно телепортирован на точку спауна. Предварительная генерация мира выполняется еще проще, командой:
Поскольку данное действие потенциально может затронуть игроков, находящихся на сервере, не забудьте подтвердить выполнение:
В общей сложности на то, чтобы сгенерировать мир радиусом в 5000 блоков (~40 млрд блоков) ушло примерно 2 часа на процессоре Intel® Xeon® Gold 6240. Поэтому, если хотите запустить прегенерацию большей карты, учитывайте, что этот процесс займет приличное количество времени, а TPS сервера будет серьезно снижено. Кроме того, помните, что даже радиус в 5000 блоков потребует примерно 2 Гб места на дисковом накопителе.
Несмотря на то, что крайняя версия плагина была разработана для Minecraft версии 1.14, опытным путем выяснено, что она прекрасно работает и на последующих версиях. Полный список команд с пояснениями доступен на форуме плагина.
Статистика форума
Сейчас онлайн: 6
Администраторы | Главные редакторы | Модератор | Дедушки | Журналисты | HENTAI BOY | Goldфаги | Журналисты-олдфаги | ТруЪ Олдфаги-с | ТруЪ Плагинщик | Олдфаги | true Художник | Модератор бездны | Картоделы | XXXL ПХЛ | Просто хорошие люди | Посетители | Новички
В нашем блоге мы уже рассказывали, как создать свой сервер Minecraft, однако с тех пор прошло 5 лет и многое поменялось. Делимся с вами актуальными способами создания и оптимизации серверной части столь популярной игры.
За свою 9-летнюю историю (если считать от даты релиза) Minecraft заработал потрясающее количество поклонников и хейтеров как среди обычных игроков, так и среди гиков. Простая концепция мира из кубиков превратилась из обычного развлечения в универсальную среду для общения и создания различных объектов из реального мира.
Помимо строительства, в игре есть возможность создавать логические схемы, которые позволяют реализовывать полноценные алгоритмы внутри Minecraft. На YouTube полно весьма впечатляющих роликов, где люди, приложив огромное количество сил и потратив множество времени, создали копию того или иного электронного устройства или построили детальную копию существующих и вымышленных архитектурных сооружений. Все ограничивается лишь фантазией геймера и возможностями игровой вселенной.
Но не будем дальше говорить о том, что именно игроки создают, а посмотрим на серверную часть приложения и осветим проблемы (порой весьма сложные), которые могут возникнуть в процессе работы под нагрузкой. Сразу оговоримся, что речь пойдет только о Java Edition.
Bukkit
Созданное энтузиастами на базе Vanilla-версии серверное приложение Bukkit значительно расширяло возможности игры за счет поддержки плагинов и модов (модификаций). Оно позволило не только добавлять в игровой процесс новые блоки, но и выполнять различные манипуляции, недоступные ванильному ПО. Что интересно, памяти это приложение требовало значительно меньше.
Установить Bukkit не составляет особого труда, соответствующая инструкция есть на ресурсе GamePedia. Но это не имеет смысла, так как с 2014 года команда Bukkit распалась, разработчики проекта стали сотрудниками Mojang Studios, а репозиторий заброшен. Таким образом, Bukkit фактически мертв, и имеет смысл обратить внимание на два следующих проекта.
Виды серверов
Самым простым вариантом является сервер, встроенный в клиент игры. Создали мир, нажали на одну кнопочку, и вот сервер стал доступен по локальной сети. Никакой серьезной нагрузки такой вариант выдержать не может, а поэтому мы не будем его даже рассматривать.
Проблемные блоки
Разновидностей блоков в Minecraft великое множество. Однако мы бы хотели остановить внимание читателей на таком блоке, как TNT. Как следует из названия, этот блок представляет собой взрывчатку (примечание редакции — это игровой предмет виртуального мира и ничего с настоящими ВВ этот предмет не имеет). Его особенность такова, что в момент активации на него начинает действовать сила гравитации. Это заставляет сервер обсчитать все координаты, если в этот момент блок начинает падать.
Если блоков TNT несколько, то детонация одного блока вызывает детонацию и включение гравитации у соседних блоков, разбрасывая их во все стороны. Вся эта красивая механика на стороне сервера выглядит как множество операций по подсчету траектории каждого из блоков, а также взаимодействия с соседними блоками. Задача крайне ресурсоемкая, что легко может проверить каждый. Сгенерируйте и подорвите куб из блоков TNT, размером хотя бы 30x30x30. И если вы думали, что у вас хороший мощный игровой компьютер, то сильно заблуждались ;)
Подобный «эксперимент» на сервере с Intel® Xeon® Gold 6240 привел к серьезной «просадке» TPS и 80% нагрузке на CPU в течение всего времени детонации блоков. А следовательно, если кто-либо из игроков сможет проделать подобное, то проблема с производительностью затронет всех находящихся на сервере игроков.
Еще более жесткий вариант — Кристаллы Края. Если TNT все же взрывается последовательно, то Кристаллы Края детонируют все одновременно, что в теории может вообще остановить работу серверного приложения.
Избежать этого сценария можно, только полностью запретив использование данных блоков в игровом мире. Например, с помощью плагина WorldGuard. Обратите внимание, что сам по себе этот плагин не работает без другого плагина WorldEdit. Так что устанавливаете вначале WorldEdit, а затем WorldGuard.
SpigotMC
Для облегчения жизни разработчиков плагинов была необходимость в API для взаимодействия с игровым миром. Именно эту задачу и решили создатели Spigot, взяв за основу ядро Bukkit и переработав его для достижения лучшей надежности и производительности. Тем не менее, Git-репозиторий проекта был заблокирован в связи с Законом об авторском праве в цифровую эпоху (DMCA), и скачать оттуда исходники невозможно.
На текущий момент SpigotMC активно развивается и используется. Он поддерживает все плагины, созданные под Bukkit, однако с ним обратно не совместим. Чтобы обойти запрет DMCA Takedown, был придуман элегантный способ под названием BuildTools. Этот инструмент избавляет от необходимости дистрибуции скомпилированного приложения и позволяет пользователям выполнить компиляцию Spigot, CraftBukkit и Bukkit из исходного кода. Все это делает запрет DMCA бесполезным.
Vanilla
Компания Mojang Studios распространяет серверную часть игры в виде Java-приложения бесплатно на официальном сайте. Это позволяет создать свой собственный выделенный сервер и персональный мир, сделав его доступным для подключения из любой точки планеты. Для тех, кто делает это впервые, есть отличный туториал, доступный в соответствующей игровой Wiki.
У этого подхода есть один серьезный недостаток, а именно — отсутствие возможностей «из коробки» подключать плагины, расширяющие функционал сервера и позволяющие не только автоматизировать многие процессы, но и оптимизировать производительность. Кроме того, у официального сервера достаточно большое потребление оперативной памяти на каждого подключенного игрока.
Заключение
Грамотное управление игровым сервером — задача не из простых. Сложности и снижение производительности будут поджидать на каждом шагу, особенно если не брать в расчет саму механику игрового процесса. Предусмотреть все невозможно, ведь игроки порой бывают очень изобретательны в попытках заставить сервер выполнить то, для чего он не был предназначен. Только разумный баланс между рисками и устанавливаемыми ограничениями позволит серверу работать в непрерывном режиме и не снижать свою производительность до критичных значений.
На карантине некоторые наши сотрудники соскучились по любимым офисам и решили воссоздать их внутри Minecraft. У вас тоже есть шанс заглянуть к нам в гости, не рискуя своим здоровьем и не тратя время на дорогу.
Здравствуйте, и заранее прошу прощения за вопрос, не касающийся программирования на языке Java.
Однако, я столкнулся с проблемой, решения которой я не смог найти самостоятельно. Буду очень благодарен любой помощи.
При создании сервера для игры Minecraft столкнулся с проблемой нехватки оперативной памяти. Машина, на которой стоит сервер обладает двухъядерным процессором и семью гигабайтами ОЗУ, но, к сожалению, 32х разрядной операционной системой Windows. При запуске файла "server.jar" сервер функционирует (три игрока свободно проиграли на нем несколько часов), но затем начались вылеты в связи с нехваткой памяти. Посему я попробовал запустить этот файл из консоли, прописав в параметрах объем выделяемой памяти, используя следующую команду "java -Xmx1536M -Xms1536M -jar C:\server\server.jar". И вот тут я наткнулся на непреодолимое препятствие в виде ошибки, которая указывает мне на то, что я не принял лицензионное соглашение, несмотря на то, что соглашение принято (скриншоты прилагаются), а именно в файле eula.txt есть строчка "eula=true".
Если вы дочитали до конца, и у вас возникло желание помочь, подскажите, пожалуйста, как мне выделить серверу побольше памяти или каким образом решить проблему с соглашением.
Кто же держит сервер mc на Windows? На линуксе держать надо.
java -Xmx1536M -Xms1536M -jar C:\server\server.jar
Xmx максимум памяти
Xms минимум памяти
Вместо M можно указать G, -Xmx7G -Xms1G
По поводу eula, вначале выключаешь сервер, потом сохраняешь изменения и снова врубаешь.
Если у вас есть время ответить, подскажите, пожалуйста, сильно ли установка сервера на линукс отличается от того же действа на винду? Для винды все что я сделал - это установил пакет джавы на чистую систему, установил сервер, установил на него фордж и сунул моды.
И выделит ли линукс столько памяти, сколько я захочу? (32х винда не выделяет больше 1526М, несмотря на, грубо говоря, 5G лишних)
Дмитрий Лаврик: windows вообще больше годен для офисных пастелушек. В линуксе всё точно так же как на винде, только там не start.bat, а start.sh, можно просто прописать java -Xmx1536M -Xms1536M -jar C:\server\server.jar и сервер запустится. И памяти можно сколько угодно поставить, в пределах допустимого. И если Вы хотите сервер для всех, то Вам нужен cauldron, а если с другом поиграть, то и так сойдёт.
Сайты соответственно, перестают работать, временно помогает перезапуск веб-сервера, но со временем по новой забивается память. Вот собственно и не понятно, то ли скрипты не оптимизированы php, то ли это могут не завершаться ненужные процессы?
- Вопрос задан более года назад
- 373 просмотра
Ограничивайте максимальный объём памяти и количество процессов PHP, ограничивайте доступную базе память. Смените апач на нгинкс, фигли он целый гигабайт-то занимает?
Спасибо, часть сайтов работает в режиме FastCGI (Apache), часть просто на нем, согласен, со временем надо поменять на nginx+php-frm скорее всего всё. А как ограничить, это настройки php?
Нужно начать использовать инструменты мониторинга и профилирования приложения на предмет потребления памяти и производительности. Для каждого ЯП они свои. Плюс есть инструменты для профилирования Linux. Однако я бы посоветовал переходить к ним лишь после тщательного анализа приложения средствами языка.
Начал xhprof, вот такая примерно картина по одной странице, но что-то выявить прям конкретного виновника не получается, на сайте wordpress + elementor (визуальный редактор):
Overall Summary
Total Incl. Wall Time (microsec): 18,780,780 microsecs
Total Incl. CPU (microsecs): 10,446,483 microsecs
Total Incl. MemUse (bytes): 99,814,312 bytes
Total Incl. PeakMemUse (bytes): 100,826,048 bytes
Number of Function Calls: 4,346,710
Просто еще не понятно, какие должны быть эти цифры, может вы подскажете?
Bodrosh, а какие параметры для запуска? Что тестировалось?
Вижу что 100MB в пике и также 4 млн. вызовов функций. Почему так?
Роман Мирр, Это главный файл сайта index.php (в его начале - начало профилирования, в конце - соответственно завершение), т.е. полностью все функции, которые используются. Правильно я понимаю, что условно 10 таких сайтов будут занимать уже Гб, в этом и проблема. что 100Мб это много?
Bodrosh, нужно более детальное профилирование, которое покажет в процентах где на что расходуется.
Я не специалист в PHP и, тем более, в xhprof.
Резкий сброс использованной ОЗУ
scharyu
Играю на собственном сервере (арендую хостинг) на сборке с модами (1.7.10). Буквально недавно появилась весьма интересная проблема: кратковременные фризы со строгим интервалом. Поясняю этапами, чтобы было яснее:
1. Кол-во использованной ОЗУ: ~950 МБ (+- 3 МБ).
2. Размер использованной ОЗУ растет прямолинейно. Буквально возрастает по 1 МБ, в сумме около 150 МБ/сек.
3. Достигает максимальной отметки в строго 1370 МБ.
4. Резкий сброс до ~950 МБ (+- 3 МБ).
5. Повтор цикла.
Из-за такого цикличного сброса ОЗУ в ~450 МБ каждые 6 секунд, происходит резкий сброс ФПС примерно в 100-120 ФПС (прим. со 287 до 160). Как бы грех жаловаться на 160 ФПС, но дело не в самих кадрах в секунду, а в именно резком циклическом сбросе на такое огромное значение, что вызывает сильный фриз на где-то полсекунды. А когда таковое происходит каждые 6 секунд, это начинает мешать.
Итак, что делать? Как решить проблему?
ОЗУ: 16 ГБ. Выделено в Java и TLauncher'е (через него работает сборка) - 16 ГБ. Собственно в игре также показывает 16384 МБ.
Не знаю, какие данные вам еще нужны, потому пишите: предоставлю все, что смогу.
south_park
Администраторы
Звание: Чоткий паря
Насколько я понимаю, принцип игры подразумевает использование определенного максимального количества оперативной памяти, после чего очистка памяти от "мусора", каких то отработанных данных, кеша, подробнее не скажу. Отсюда и резкая очистка памяти, и чем большем модов, тем выше будет расти счетчик и сильней сбрасываться.
Специально посмотрел на поведение игры у меня, если ограничение стоит на 1300мб, то игра расходует до ~1100 после чего сбрасывает до примерно 750-900, выделив игре 3 гб ничего не изменилось и подобное поведение я видел всегда, если смотреть в одну точку набор оперативки происходит медленнее, если вертеть головой - быстрее.
Насчет фризов, тут сказать сложно, есть моды для дебага которые позволят залогировать игру и попытаться найти, что именно вызывает задержки, лично сам выкладывал несколько подобных модов.
Вероятно виноват мод который заново просчитывает какие то объекты, так просто сказать невозможно.
Есть предположение, что виноват лаунчер, да, как бы странно это не выглядело, но в лаунчере, в ТЛ и тлаунчер есть так называемая консоль событий игры, стандартно она отключена, но видимо какой то процесс лаунчера все равно с ней работает, в общем, не знаю как сейчас, но ранее я ловил ТЛ лаунчер на дикие фризы игры на некоторых картах с большим количеством командных блоков которые валили в лог кучу информации.
Подобные проблемы были и у нас в лаунчере, но мы сделали несколько уровней логирования если можно так сказать.
Ни разу не гоню на лаунчер, но лично я сталкивался с подобным, потому стоит проверить.
Читайте также: