Skip to content

OverwriteMC/meowice-flags

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 

Repository files navigation

!ВАЖНО! ДАННЫЕ ФЛАГИ НЕ ПРЕДНАЗНАЧЕНЫ ДЛЯ ИСПОЛЬЗОВАНИЯ ГДЕ ЛИБО КРОМЕ GRAALVM 25+ ВЕРСИИ

Я решил сделать свой аналог этих меовси фагов.
Оригинальная страница с ними мне никогда не нравилась, поскольку там помимо действительно рабочих флагов насрано дефолтными флагами поверх.
Тут я к чёртовой матери вырезал все дефолтные, оставив только то, что не включено по умолчанию на graalvm25. А также добавил пару флагов от себя.

The flags set

Для G1GC

--add-modules=jdk.incubator.vector -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1MaxNewSizePercent=50 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=15 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=20 -XX:G1MixedGCLiveThresholdPercent=90 -XX:SurvivorRatio=32 -XX:G1HeapWastePercent=5 -XX:MaxTenuringThreshold=1 -XX:+PerfDisableSharedMem -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:+UseNUMA -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:AllocatePrefetchStyle=3 -XX:+AlwaysActAsServerClassMachine -XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2M -XX:+UseLargePages -XX:+UseStringDeduplication -XX:+OmitStackTraceInFastThrow -XX:+UseFastStosb -XX:+UseVectorCmov -XX:+AlignVector -XX:+EnableVectorSupport -XX:+UseCharacterCompareIntrinsics -XX:+UseVectorStubs -XX:UseAVX=2 -XX:+UseCompactObjectHeaders -XX:AutoBoxCacheMax=256 -XX:+TrustFinalNonStaticFields -Djdk.nio.maxCachedBufferSize=262144 -Djdk.graal.UsePriorityInlining=true -Djdk.graal.VectorizeHashes=true -Djdk.graal.VectorizeSIMD=true -Djdk.graal.TuneInlinerExploration=1 -Djdk.graal.CompilerConfiguration=enterprise

Аналог для ZGC (используйте только с большими объёмами памяти)

--add-modules=jdk.incubator.vector -XX:+UseZGC -XX:-ZProactive -XX:SoftMaxHeapSize=$((Memory - 2048))M -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+PerfDisableSharedMem -XX:+UseNUMA -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:NmethodSweepActivity=1 -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+AlwaysActAsServerClassMachine -XX:+UseTransparentHugePages -XX:LargePageSizeInBytes=2M -XX:+UseLargePages -XX:+UseStringDeduplication -XX:+OmitStackTraceInFastThrow -XX:+UseFastStosb -XX:+UseVectorCmov -XX:+AlignVector -XX:+EnableVectorSupport -XX:+UseCharacterCompareIntrinsics -XX:+UseVectorStubs -XX:UseAVX=2 -XX:+UseCompactObjectHeaders -XX:AutoBoxCacheMax=256 -XX:+TrustFinalNonStaticFields -Djdk.nio.maxCachedBufferSize=262144 -Djdk.graal.UsePriorityInlining=true -Djdk.graal.VectorizeHashes=true -Djdk.graal.VectorizeSIMD=true -Djdk.graal.TuneInlinerExploration=1 -Djdk.graal.CompilerConfiguration=enterprise

Пояснение

Касательно основы флагов можете почитать в оригинальной статье.
Я же добавил следующие флаги:
-XX:+UseCompactObjectHeaders - Флаг, который снижает расходы памяти на заголовки объектов, сжимая их до 64 бит на 64 битных архитектурах. После добавления заметен ощутимый спад потребления памяти.
-XX:AutoBoxCacheMax=256 - Флаг, задающий размер кеша интов для операций боксинга. Увеличен вдвое относительно базового значения. Потенциально может ускорить базовые операции при взаимодействии с коллекциями, где хранятся объекты Integer.
-XX:+TrustFinalNonStaticFields - Флаг, который заставляет java оптимизировать не-static final поля так же как и static (т.е. константы), что позволяет значительно оптимизировать обращения к ним.

Трабл-шутинг

В этом пункте важные моменты по флагам, которые могут навредить.
-XX:+UseFastUnorderedTimeStamps - Потенциально опасен тем, что заставляет использовать менее строгие метки памяти, не синхронизированные между потоками. При очень маловероятных сценариях способен нарушить задуманную кем-то в своих плагинах/ядрах логику работы System.nanoTime и System.currentTimeMillis. Сценарий маловероятный, но имеет место быть.
-XX:+UseStringDeduplication - Повышает потребление памяти в общем, за счёт дольшего хранения строк в памяти для их реюза, также повышает задержки между сборками мусора, поскольку ему теперь придётся ещё и эти строки прогонять, однако флаг может снизить затраты на пересоздание строк, что в реалиях, когда у всех миллион градиентных префиксов большой выигрыш. Вопрос лишь что важнее - затраты на сборщик или на пересоздания компонентов по миллиарду раз за тик.
-XX:+OmitStackTraceInFastThrow - Никогда не используйте на проде, где вам нужно отслеживать потенциальные проблемы. Флаг отключит вам вывод полного стактрейса от эксепшнов в консоль, в следствии чего если ВДРУГ у вас возникнет проблема - вы хуй чо поймёте.

About

Небольшая переработка этих флагов

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors