сборщик мусора памяти майнкрафт
Проблема с FPS
1. Не поможет. У меня самого такая же проблема. Имею всего 4 гига оперативки, из которых 50% всегда заняты. Майнкрафту остается 2 гига. И через несколько часов памяти становится мало и сборщик мусора начинает запускаться намного чаще, и => грузить систему. 2. Лучше так не делать, а запускать конкретно майнкрафт с такими параметрами. Тем более лаунчер позволяет.
Спасибо!
Я пробовал Оптифайн, хуже делал.
Джава выдает ошибку если пытаюсь сменить с 1 на 2, 3, 4 КГ.
Без модов всё отлично идет.
Я писал до этого два ответа, но они видимо не дошли..
И ещё, если я переустановлю виндовс на 64, пропадёт ли диск H? Я просто очень редко переустанавливал виндовс. Спасибо.
Добавлено спустя 1 час 45 минут 33 секунды:
И да, можете помочь с изменением макс. количества памяти для мк?
Когда Я пытаюсь через лаунчер, он мне выдаёт следующее:
«Error: Could not create the Java Virtual Machine.
Error: A fatal exception hac occurred. Program will exit.»
И название окна: «Java Virtual Machine Launcher.»
Я правда, не знаю как это сделать.
А, прости, не заметил.
Прости, просто винду очень давно и только 1 раз переустанавливал, и не помню уже, что как.
Ты имеешь в виду диск С перед установкой форматировать, или это будет предложено во время?
Оптимизация сервера Minecraft
В нашем блоге мы уже рассказывали, как создать свой сервер Minecraft, однако с тех пор прошло 5 лет и многое поменялось. Делимся с вами актуальными способами создания и оптимизации серверной части столь популярной игры.
За свою 9-летнюю историю (если считать от даты релиза) Minecraft заработал потрясающее количество поклонников и хейтеров как среди обычных игроков, так и среди гиков. Простая концепция мира из кубиков превратилась из обычного развлечения в универсальную среду для общения и создания различных объектов из реального мира.
Помимо строительства, в игре есть возможность создавать логические схемы, которые позволяют реализовывать полноценные алгоритмы внутри Minecraft. На YouTube полно весьма впечатляющих роликов, где люди, приложив огромное количество сил и потратив множество времени, создали копию того или иного электронного устройства или построили детальную копию существующих и вымышленных архитектурных сооружений. Все ограничивается лишь фантазией геймера и возможностями игровой вселенной.
Но не будем дальше говорить о том, что именно игроки создают, а посмотрим на серверную часть приложения и осветим проблемы (порой весьма сложные), которые могут возникнуть в процессе работы под нагрузкой. Сразу оговоримся, что речь пойдет только о Java Edition.
Виды серверов
Самым простым вариантом является сервер, встроенный в клиент игры. Создали мир, нажали на одну кнопочку, и вот сервер стал доступен по локальной сети. Никакой серьезной нагрузки такой вариант выдержать не может, а поэтому мы не будем его даже рассматривать.
Vanilla
Компания Mojang Studios распространяет серверную часть игры в виде Java-приложения бесплатно на официальном сайте. Это позволяет создать свой собственный выделенный сервер и персональный мир, сделав его доступным для подключения из любой точки планеты. Для тех, кто делает это впервые, есть отличный туториал, доступный в соответствующей игровой Wiki.
У этого подхода есть один серьезный недостаток, а именно — отсутствие возможностей «из коробки» подключать плагины, расширяющие функционал сервера и позволяющие не только автоматизировать многие процессы, но и оптимизировать производительность. Кроме того, у официального сервера достаточно большое потребление оперативной памяти на каждого подключенного игрока.
Bukkit
Созданное энтузиастами на базе Vanilla-версии серверное приложение Bukkit значительно расширяло возможности игры за счет поддержки плагинов и модов (модификаций). Оно позволило не только добавлять в игровой процесс новые блоки, но и выполнять различные манипуляции, недоступные ванильному ПО. Что интересно, памяти это приложение требовало значительно меньше.
Установить Bukkit не составляет особого труда, соответствующая инструкция есть на ресурсе GamePedia. Но это не имеет смысла, так как с 2014 года команда Bukkit распалась, разработчики проекта стали сотрудниками Mojang Studios, а репозиторий заброшен. Таким образом, Bukkit фактически мертв, и имеет смысл обратить внимание на два следующих проекта.
SpigotMC
Для облегчения жизни разработчиков плагинов была необходимость в API для взаимодействия с игровым миром. Именно эту задачу и решили создатели Spigot, взяв за основу ядро Bukkit и переработав его для достижения лучшей надежности и производительности. Тем не менее, Git-репозиторий проекта был заблокирован в связи с Законом об авторском праве в цифровую эпоху (DMCA), и скачать оттуда исходники невозможно.
На текущий момент SpigotMC активно развивается и используется. Он поддерживает все плагины, созданные под Bukkit, однако с ним обратно не совместим. Чтобы обойти запрет DMCA Takedown, был придуман элегантный способ под названием BuildTools. Этот инструмент избавляет от необходимости дистрибуции скомпилированного приложения и позволяет пользователям выполнить компиляцию Spigot, CraftBukkit и Bukkit из исходного кода. Все это делает запрет DMCA бесполезным.
PaperMC
Казалось бы, все круто, и Spigot стал прекрасным вариантом. Но некоторым энтузиастам этого показалось мало, и они запилили свой собственный форк Spigot «на стероидах». На странице проекта ключевым достоинством указано, что “It’s stupid fast”. Развитое коммьюнити позволяет оперативно решать возникающие вопросы, а расширенное API — делать интересные плагины. Запустить PaperMC можно одной простой командой, приведенной в документации.
С совместимостью у PaperMC все прекрасно, так что написанные плагины под SpigotMC легко заработают и на PaperMC, но без официальной поддержки. Обратная совместимость со SpigotMC также присутствует. Теперь, когда мы перечислили различные варианты создания сервера, перейдем к тем проблемам производительности, которые могут возникать.
Проблемы и решения
Главное, что нужно понимать, — все, что касается обработки игрового мира будет обрабатываться только на одном вычислительном ядре физического сервера. Так что если вдруг у вас прекрасный сервер с десятком вычислительных ядер, то загружено будет только одно. Все остальные будут фактически простаивать. Такова уж архитектура приложения, и ничего вы с этим поделать не сможете. Так что при выборе сервера следует обращать внимание не на количество ядер, а на тактовую частоту. Чем она будет выше, тем лучше будет производительность.
Что касается вопроса об объеме оперативной памяти, тут следует исходить из следующих показателей:
Для запуска серверной части рекомендуем воспользоваться флагами, указанными в статье Tuning the JVM – G1GC Garbage Collector Flags for Minecraft. Эта «черная магия» позволяет серверу грамотно настроить «сборщик мусора» и оптимизирует использование оперативной памяти. Не стоит выделять памяти больше, чем реально потребляет сервер при пиковом наплыве игроков.
Генерация карты блоков
“Вы действительно считаете, что Луна существует, только когда вы на неё смотрите?” (Альберт Эйнштейн)
Абсолютно новый сервер. Как только игрок первый раз успешно подключается, игровой персонаж появляется на общей точке сбора (спаун). Это единственное место, где игровой мир предварительно генерируется сервером. В этот же момент клиентская часть смотрит в настройки, и ключевым параметром является дальность прорисовки. Измеряется она в чанках (область карты 16×16 и высотой в 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, опытным путем выяснено, что она прекрасно работает и на последующих версиях. Полный список команд с пояснениями доступен на форуме плагина.
Проблемные блоки
Если блоков TNT несколько, то детонация одного блока вызывает детонацию и включение гравитации у соседних блоков, разбрасывая их во все стороны. Вся эта красивая механика на стороне сервера выглядит как множество операций по подсчету траектории каждого из блоков, а также взаимодействия с соседними блоками. Задача крайне ресурсоемкая, что легко может проверить каждый. Сгенерируйте и подорвите куб из блоков TNT, размером хотя бы 30x30x30. И если вы думали, что у вас хороший мощный игровой компьютер, то сильно заблуждались 😉
Подобный «эксперимент» на сервере с Intel® Xeon® Gold 6240 привел к серьезной «просадке» TPS и 80% нагрузке на CPU в течение всего времени детонации блоков. А следовательно, если кто-либо из игроков сможет проделать подобное, то проблема с производительностью затронет всех находящихся на сервере игроков.
Еще более жесткий вариант — Кристаллы Края. Если TNT все же взрывается последовательно, то Кристаллы Края детонируют все одновременно, что в теории может вообще остановить работу серверного приложения.
Избежать этого сценария можно, только полностью запретив использование данных блоков в игровом мире. Например, с помощью плагина WorldGuard. Обратите внимание, что сам по себе этот плагин не работает без другого плагина WorldEdit. Так что устанавливаете вначале WorldEdit, а затем WorldGuard.
Заключение
Грамотное управление игровым сервером — задача не из простых. Сложности и снижение производительности будут поджидать на каждом шагу, особенно если не брать в расчет саму механику игрового процесса. Предусмотреть все невозможно, ведь игроки порой бывают очень изобретательны в попытках заставить сервер выполнить то, для чего он не был предназначен. Только разумный баланс между рисками и устанавливаемыми ограничениями позволит серверу работать в непрерывном режиме и не снижать свою производительность до критичных значений.
На карантине некоторые наши сотрудники соскучились по любимым офисам и решили воссоздать их внутри Minecraft. У вас тоже есть шанс заглянуть к нам в гости, не рискуя своим здоровьем и не тратя время на дорогу.
Для этого мы приглашаем всех желающих на наш сервер minecraft.selectel.ru (версия клиента 1.15.2), где воссозданы дата-центры Цветочная-1 и Цветочная-2. Не забудьте согласиться со скачиванием дополнительных ресурсов, они необходимы для корректного отображения некоторых локаций.
Вас ждут квесты, промокоды, «пасхалки» и приятное общение.
Сборщик мусора памяти майнкрафт
Майнкрафт, особенно с модами — очень требовательная к ресурсам ПК игра, анон. Если у тебя слабая печка, то ты скорее всего окажешься не доволен производительностью игры. В этой статье специально для тебя были собраны все возможные рекомендации по оптимизации Minecraft, с которыми в кубач можно будет поиграть даже на некропк. Впрочем, пользуйся вдумчиво и аккуратно: некоторые из них могут оказать обратный эффект и лишь усугубить ситуацию.
Оптимизация аргументов запуска
Аргументы запуска (JVM флаги) — отличный способ облегчить жизнь твоему сборщику мусора и в целом начать использовать ресурсы комьютера более эффективно. Учти, что некоторым флагам может понадобиться полная версия джавы, т. е. JDK . (или серверная JRE )
Флаги, не описанные в статьях выше:
Оптимизация с помощью модов
С помощью модификаций можно добавлять не только килотонны нового контента, но и заставлять игру работать быстрее.
Оптимизация новейшей версии (1.16.4)
Мод | Описание |
---|---|
OptiFine | Расширенные настройки графики, оптимизация для некропк, шейдеры для йобапк. |
Phosphor | Заметные оптимизации светового движка. |
Lithium | Значительные бусты физики, загрузки чанков, ИИ мобов, редстоуна, etc. |
Sodium | ВНЕЗАПНО релизнулся. По заявлению автора, бустит фпс в 400%, что правда. |
OptiFabric | Без этой штучки фабрик и оптифайн не дружат. |
FastFurnace и FastWorkbench | Кэширование рецептов верстака и печки, что способствует экономии процессорного времени. Эффект заметен лишь на больших серверах с множеством баз. В сингле вряд ли почувствуется. |
Мод | Описание |
---|---|
OptiFine | Расширенные настройки графики, оптимизация для некропк, шейдеры для йобапк. |
Phosphor | Заметные оптимизации светового движка. |
VanillaFix | Различные багфиксы, а ещё игра не будет закрываться из-за крашей. Musthave! |
FoamFix | Значительная экономия ОЗУ посредством хитрого шаманства. |
AI Improvements | Оптимизация ИИ мобов путём кастрирования патфайндинга. |
Surge | Ускорение загрузки игры и пара багфиксов. |
Multithreaded Noise | Многоядерная генерация перлин нойза; чем больше ядер у процессора — тем лучше. |
Performant | Различные оптимизации патфайндинга, оптимизация мобов (и энтитей в целом). |
Unloader | Более агрессивная выгрузка измерений, что в теории фиксит утечки памяти. |
TexFix | Экономия памяти при использовании детализированных ресурспаков. (если не используешь их, мод тебе не нужен. |
BetterFps | Оптимизация рендеринга путём повышения эффективности sin() и cos() функций. (этим по сути дублирует функционал OptiFine, но у мода есть и уникальные фичи, поэтому он тут. |
Chunk-Pregenerator | Быстрая прегенерация чанков мира в определённом радиусе, очень спасает от лагов во время путешествий в неизученные места. А ещё имеет няшный интерфейс и даже умеет в ретроген! |
FastFurnace и FastWorkbench | Кэширование рецептов верстака и печки, что способствует экономии процессорного времени. Эффект заметен лишь на больших серверах с множеством баз. В сингле вряд ли почувствуется. |
Мод | Описание |
---|---|
OptiFine | Расширенные настройки графики, оптимизация для некропк, шейдеры для йобапк. |
BetterFps | Оптимизация рендеринга путём повышения эффективности sin() и cos() функций. Дублирует функционал OptiFine, но есть и уникальные фичи. |
Chunk-Pregenerator | Позволяет заранее генерировать чанки мира, чем спасает от лагов во время путешествий в неизученные места. А ещё имеет няшный GUI и даже умеет в ретроген. (На 1.7.10-версию GregoriousT советует этот патч для ваниллы и этот патч, если установлен Forge Multipart, чтобы избежать крашей во время прегенерации. Источник. |
FastCraft | Много разных ощутимых оптимизаций. С OptiFine работает только последняя версия, в которой, ради совместимости с оптифайном, чуть порезали оптимизаций. Так что, если не пользуетесь оптифайном, выбирайте предпоследнюю версию. |
Thaumic Fixer | Фиксит лаги во время сканирования таумометром в Thaumcraft. Требует, очевидно, Thaumcraft. Используйте на свой страх и риск, ведь в комментариях к моду пишут о множестве проблем и багов. |
TIP: Некоторые моды имеют возможность отключить особо тяжёлый функционал, и снизив тем самым нагрузку на ПК.
Например, в конфиге Lycanites Mobs есть опции Disable Model Alpha и Model Multipass, которые облегчат жизнь твоему ПК, порезав рендер моделек ликанитов и альфа-канал. А разработчик Twilight Forest в конфиге мода вообще отвёл отдельную секцию для настроек производительности. Подобное снисхождение для обладателей некропекарен имеется во многих модах, анон, не ленись читать конфиги!
Обновление библиотек старых версий
Если ты играешь на версиях до примерно 1.12.2, то для повышения производительности и исправления багов стоит обновить библиотеки, которые использует майнкрафт.
Отключение логов
Если ты — счастливый обладатель медленного HDD в 2020 году, то может помочь отключение логгирования в майнкрафте. Для этого добавьте к аргументам запуска -Dlog4j.configurationFile=log4j2.xml и создайте в директории игры файл log4j2.xml со следующим содержанием:
Ram-диск
Если у тебя ещё остаётся оперативная память, после запуска майнкрафта, ты можешь перенести мир на ram-диск. Также я слышал слух, про то, что имеет смысл перенести JVM на рамдиск и пользуюсь этим советом, но доказательств пользы у меня нет.
TIP: Не пользуйся фичей, если собираешься прегенерировать чанки! Оперативная память закончится моментально. Сейв, с оверворлдом, прогруженным на радиус
300 чанков, запросто съедает больше гигабайта места! И в целом ей стоит пользоваться, только если после запуска майнкрафта и всего, нужного вам во время игры, у вас остаётся гигабайт-другой оперативки: если вы выделите недостаточно места на рамдиске под мир, то потеряете часть своего драгоценного прогресса по игре, когда сейв заполнит весь рамдиск, а если выделите всё, что у вас есть, и оперативка заполнится, то будете сидеть перед замершим компом и ждать, пока OOMKiller прихлопнет вам майнкрафт!
В Linux используется tmpfs и автобекап. Этот гайд хоть и находится на вики арча, но подойдёт для 99% линуксов.
Для Windows есть огромный зоопарк какого-то софта для рамдисков, тот, кто сейчас это пишет, не может ничего порекомендовать из него.
Избавляемся от мусора в Java
Что такое сборка мусора, зачем она нужна и как работает
Для работы любого приложения требуется память. Однако память компьютера ограничена. Поэтому важно ее очищать от старых неиспользуемых данных, чтобы освободить место для новых.
Кто занимается этой очисткой? Как и когда очищается память? Как выглядит структура памяти? Давайте разберем с этим подробнее.
Структура памяти Java
Память в Java состоит из следующих областей:
Структура памяти Java
Native Memory — вся доступная системная память.
Stack (стек) — используется для хранения локальных переменных и стека вызовов метода. Для каждого потока выделяется свой стек.
Metaspace (метаданные) — в этой памяти хранятся метаданные классов и статические переменные. Это пространство также является общими для всех. Так как metaspace является частью native memory, то его размер зависит от платформы. Верхний предел объема памяти, используемой для metaspace, можно настроить с помощью флага MaxMetaspaceSize.
PermGen (Permanent Generation, постоянное поколение) присутствовало до Java 7. Начиная с Java 8 ему на смену пришла область Metaspace.
CodeCache (кэш кода) — JIT-компилятор компилирует часто исполняемый код, преобразует его в нативный машинный код и кеширует для более быстрого выполнения. Это тоже часть native memory.
Сборка мусора: введение
Что такое «мусор»? Мусором считается объект, который больше не может быть достигнут по ссылке из какого-либо объекта. Поскольку такие объекты больше не используются в приложении, то их можно удалить из памяти.
Например, на диаграмме ниже объект fruit2 может быть удален из памяти, поскольку на него нет ссылок.
Мусор
Что такое сборка мусора? Сборка мусора — это процесс автоматического управления памятью. Освобождение памяти (путем очистки мусора) выполняется автоматически специальным компонентом JVM — сборщиком мусора (Garbage Collector, GC). Нам, как программистам, нет необходимости вмешиваться в процесс сборки мусора.
Источник: Oracle.com
Сборка мусора: процесс
Для сборки мусора используется алгоритм пометок (Mark & Sweep). Этот алгоритм состоит из трех этапов:
Sweep (очистка). На этом шаге освобождается память, занятая объектами, не отмеченными на предыдущем шаге.
Compact (уплотнение). Объекты, пережившие очистку, перемещаются в единый непрерывный блок памяти. Это уменьшает фрагментацию кучи и позволяет проще и быстрее размещать новые объекты.
Mark & Sweep GC
Поколения объектов
Что такое поколения объектов?
Для оптимизации сборки мусора память кучи дополнительно разделена на четыре области. В эти области объекты помещаются в зависимости от их возраста (как долго они используются в приложении).
Young Generation (молодое поколение). Здесь создаются новые объекты. Область young generation разделена на три части раздела: Eden (Эдем), S0 и S1 (Survivor Space — область для выживших).
Old Generation (старое поколение). Здесь хранятся давно живущие объекты.
Поколения в куче
Что такое Stop the World?
Когда запускается этап mark, работа приложения останавливается. После завершения mark приложение возобновляет свою работу. Любая сборка мусора — это «Stop the World».
Что такое гипотеза о поколениях?
Как уже упоминалось ранее, для оптимизации этапов mark и sweep используются поколения. Гипотеза о поколениях говорит о следующем:
Большинство объектов живут недолго.
Если объект выживает, то он, скорее всего, будет жить вечно.
Этапы mark и sweep занимают меньше времени при большом количестве мусора. То есть маркировка будет происходить быстрее, если анализируемая область небольшая и в ней много мертвых объектов.
Таким образом, алгоритм сборки мусора, использующий поколения, выглядит следующим образом:
Сборка мусора поколениями
Новые объекты создаются в области Eden. Области Survivor (S0, S1) на данный момент пустые.
Когда область Eden заполняется, происходит минорная сборка мусора (Minor GC). Minor GC — это процесс, при котором операции mark и sweep выполняются для young generation (молодого поколения).
После Minor GC живые объекты перемещаются в одну из областей Survivor (например, S0). Мертвые объекты полностью удаляются.
По мере работы приложения пространство Eden заполняется новыми объектами. При очередном Minor GC области young generation и S0 очищаются. На этот раз выжившие объекты перемещаются в область S1, и их возраст увеличивается (отметка о том, что они пережили сборку мусора).
При следующем Minor GC процесс повторяется. Однако на этот раз области Survivor меняются местами. Живые объекты перемещаются в S0 и у них увеличивается возраст. Области Eden и S1 очищаются.
Объекты между областями Survivor копируются определенное количество раз (пока не переживут определенное количество Minor GC) или пока там достаточно места. Затем эти объекты копируются в область Old.
Major GC. При Major GC этапы mark и sweep выполняются для Old Generation. Major GC работает медленнее по сравнению с Minor GC, поскольку старое поколение в основном состоит из живых объектов.
Преимущества использования поколений
Minor GC происходит в меньшей части кучи (
2/3 от кучи). Этап маркировки эффективен, потому что область небольшая и состоит в основном из мертвых объектов.
Недостатки использования поколений
В каждый момент времени одно из пространств Survivor (S0 или S1) пустое и не используется.
Сборка мусора: флаги
В этом разделе приведены некоторые важные флаги, которые можно использовать для настройки процесса сборки мусора.
Флаг
Описание
Первоначальный размер кучи
Максимальный размер куча
Отношение размера Old Generation к Young Generation
Отношение размера Eden к Survivor
Возраст объекта, когда объект перемещается из области Survivor в область Old Generation
Типы сборщиков мусора
Сборщик мусора
Описание
Преимущества
Когда использовать
Флаги для включения
Использует один поток.
Эффективный, т.к. нет накладных расходов на взаимодействие потоков.
Работа с небольшими наборами данных.
Использует несколько потоков.
Многопоточность ускоряет сборку мусора.
В приоритете пиковая производительность.
Допустимы паузы при GC в одну секунду и более.
Работа со средними и большими наборами данных.
Для приложений, работающих на многопроцессорном или многопоточном оборудовании.
Выполняет некоторую тяжелую работу параллельно с работой приложения.
Может использоваться как на небольших системах, так и на больших с большим количеством процессоров и большим количеством памяти.
Когда время отклика важнее пропускной способности.
Паузы GC должны быть меньше одной секунды.
Выполняет всю тяжелую работу параллельно с работой приложения.
В приоритете время отклика.
Сборщики мусора в Java
Инструменты мониторинга GC
Что мониторить?
Частота запуска сборки мусора. Так как GC вызывает «stop the world», поэтому чем время сборки мусора меньше, тем лучше.
Длительность одного цикла сборки мусора.
Как мониторить сборщик мусора?
Для мониторинга можно использовать следующие инструменты:
Для включения логирования событий сборщика мусора добавьте следующие параметры JVM: