Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/bin/sh
  2. java -Dfile.encoding=utf-8 -server -XX:+UnlockExperimentalVMOptions -XX:+TieredCompilation -XX:+UseFastAccessorMethods -XX:+DisableExplicitGC -XX:+UseBiasedLocking -XX:+CMSCleanOnEnter -XX:+UseFastEmptyMethods -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:+OptimizeFill -XX:LoopUnrollMin=4 -XX:LoopMaxUnroll=16 -XX:+UseLoopPredicate -XX:+RangeCheckElimination -XX:UseSSE=4 -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseNUMA -XX:+UseParNewGC -XX:+AlwaysPreTouch -XX:+CMSScavengeBeforeRemark -XX:+UseFastJNIAccessors -XX:AutoBoxCacheMax=10000 -XX:AllocatePrefetchStyle=1 -XX:InitiatingHeapOccupancyPercent=50 -Xmx5G -Dfml.queryResult=confirm -jar './forge.jar'
  3. # -Dfile.encoding=utf-8                                 // Кодировка utf-8
  4. # -Dio.netty.leakDetection.level=advanced               // дебаг по утечкам памяти
  5. # -Dfml.debugExit=true                                  // дебаг форджа
  6. # -XX:+UnlockExperimentalVMOptions                      // Разрешает использование всех перечисляемых ниже аргументов.
  7. # -XX:+TieredCompilation                                // компилятор кода. Сильно оптимизирует работу процессора и памяти.
  8. # -XX:+UseMembar                                        // Включает алгоритм "true memory" для совместимости со старым кодом. Снижение производительности на 10%
  9. # -XX:+ReduceSignalUsage                                // Снижает количество сигнализации между VM и процессором. Снижение производительности на 1-4%
  10. # -XX:+UseFastAccessorMethods                           // Использовать оптимизированные методы доступа. Исключает различные проверки при обращении к объектам. Увеличивает скорость работы, но может вызывать нестабильность, если автор мода - лентяй.
  11. # -XX:+DisableExplicitGC                                // Заставляет Garbage Collector игнорировать принудительные вызовы, которые могут отрицательно сказаться на производительности.
  12. # -XX:+UseG1GC                                          // Сборщик мусора Java 8
  13. # -XX:G1HeapRegionSize=16                               // тут джава сама может лучше подобрать. Устанавливает размер области памяти для G1.Помимо процентного указания, целесообразно указать и реальное значение памяти.
  14. # -XX:+UseBiasedLocking                                 // ускорение синхронизации объектов на многоядерных процессорах.
  15. # -XX:+UseFastEmptyMethods                              // исключение из компиляции пустых методов.
  16. # -XX:+UseCompressedOops                                // уменьшение размеров указателя, заголовков, а также сдвигов внутри созданных объектов. В зависимости от кода сэкономит 20-60% ОЗУ. Позволяет использовать 32-битные ссылки в 64-битном окружении. Сохраняет приличное количество памяти в некоторых случаях.
  17. # -XX:+OptimizeStringConcat                             // Вычисляет общее количество символов каждого объекта для выделения памяти лишь 1 раз.
  18. # -XX:+OptimizeFill                                     // замена циклов работы с массивами на машинный код, что ускоряет работу
  19. # -XX:LoopUnrollMin=4                                   // Развертывание цикла, также известное как разматывание цикла, представляет собой метод преобразования цикла, который пытается оптимизировать скорость выполнения программы за счет ее двоичного размера, что является подходом, известным как компромисс между пространством и временем. Преобразование может быть выполнено вручную программистом или оптимизирующим компилятором.
  20. # -XX:LoopMaxUnroll=16                                  // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <- Максимальное значение
  21. # -XX:+UseLoopPredicate                                 // исключает проверку условий внутри тела цикла. В настоящее время оптимизация предикатов цикла применяется для удаления проверки диапазона массивов и проверки инварианта цикла (таких как проверки на наличие ошибок и проверки массивов). Прецизионность цикла контролируется символом. Нужно тестировать на возможные ошибки.
  22. # -XX:+RangeCheckElimination                            // исключает проверки диапазона для циклов-инвариантных массивов.
  23. # -XX:-UseGCOverheadLimit                               // игнорирует нехватку памяти для сборки мусора, избавляет частично от Out Of Memory Error
  24. # -XX:+CMSIncrementalPacing                             // автоматическое регулирование процессов CMS в Incremental mode
  25. # -XX:UseSSE=4                                          // использование инструкций SSE процессора. (0 - отключить, 1/2/3/4 - использование SSE/SSE2/SSE3/SSE4)
  26. # -XX:+CMSCleanOnEnter                                  // очистка CMS при запуске Java-машины. Улучшает производительность снижая допустимое количество "грязных карт".
  27. # -XX:+UseInterpreter                                   // включение интерпретатора для некомпилированных методов.
  28. # -XX:MaxTenuringThreshold=15                           // количество копирований выживающих объектов между разными местами.
  29. # -XX:+RewriteFrequentPairs                             // перезапись недавно использовавшихся пар байткода в одно целое.
  30. # -XX:+UseInlineCaches                                  // использование внеочередного кеширования для виртуальных вызовов.
  31. # -XX:+UseThreadPriorities                              // использование приоритета для процесса Java-машины.
  32. # -XX:ThreadPriorityPolicy=42                           // установка приоритета процесса для увеличения выделяемых ресурсов.
  33. # -XX:ParallelGCThreads=8                               // Количество потоков Garbage Collector'а (1 физическое ядро = 1 поток, если у вас включен Hyperthreading, то 1 физическое ядро = 2 потока) Установите согласно количеству ядер вашего процессора.
  34. # -XX:+UseConcMarkSweepGC                               // Удаляет старые объекты из буфера Garbage Collector'а. Оптимизирует использование памяти
  35. # -XX:+CMSClassUnloadingEnabled                         // Высвобождает выделенную, но давно не используемую память.
  36. # -XX:+UseNUMA                                          // Включает использование архитектуры NUMA. Оптимизирует алгоритмы работы с памятью и потоками процессора.
  37. # -XX:+UseParNewGC                                      // Включает распараллеливание вызовов Garbage Collector'а. Снижает задержки при вызовах GC, и заставляет игру выполняться более плавно.
  38. # -XX:G1NewSizePercent=10                               // Устанавливает процент памяти, которая будет выделяться на новые объекты при их создании. Снижает используемый объем памяти.
  39. # -XX:G1ReservePercent=10                               // Резервирует процент памяти, используемый на G1. Не только снижает используемый объем памяти, но и предотвращает ее глобальный рост.
  40. # -XX:G1MaxNewSizePercent=10                            // Устанавливает максимальный процент памяти, которая будет выделяться на новые объекты при их создании. Заставим наш GC запускаться чаще, но не слишком часто.
  41. # -XX:G1HeapWastePercent=10                             // Устанавливает процент "мусора" в GC, который считается допустимым.
  42. # -XX:+AlwaysPreTouch                                   // Очищает выделяемую область памяти перед использованием. Замедляет загрузку, однако увеличивает общую производительность при работе с большими объемами памяти.
  43. # -XX:+ScavengeBeforeFullGC                             // Сначала очищает новые объекты в GC, а затем уже проводит полный цикл. Снижает затраты памяти на GC.
  44. # -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses     // Отключает часовые перерывы в работе GC из RMI, и выгружает классы. Разгружает память и снижает количество задержек при работе GC.
  45. # -XX:+CMSScavengeBeforeRemark                          // Пытается очистить мелкие объекты перед запуском полного цикла GC. Снижает лаг, оптимизирует работу с памятью.
  46. # -XX:+AlwaysTenure                                     // Использует старый алгоритм GC для оставшихся объектов. Флаг нужно использовать при включении новых алгоритмов GC, однако, он нам ломает всю оптимизацию.
  47. # -XX:+UseFastJNIAccessors                              // Использовать быстрые алгоритмы доступа к сторонним библиотекам, написанным на других языках.
  48. # -XX:+UseCodeCacheFlushing                             // Сброс страниц кеша для снижения объема используемой памяти.
  49. # -XX:+AggressiveOpts                                   // Использование этого флага совместно с "AutoBoxCacheMax" (который оптимизирует работу процессора) позволит поднять производительность за счет увеличения объема используемой памяти. Включите этот флаг, если готовы пожертвовать дополнительными 10-50MB памяти.
  50. # -XX:AutoBoxCacheMax=10000                             // Позволяет расширить диапазон кешируемых значений для целых типов при старте виртуальной машины. Нужно тестировать значения.
  51. # -XX:+DoEscapeAnalysis                                 // Оптимизирует задержки при параллельных вычислениях. Включите флаг, если у вас больше двух физических ядер.
  52. # -XX:+EliminateLocks                                   // Оптимизирует задержки при параллельных вычислениях. Включите флаг, если у вас больше двух физических ядер.
  53. # -XX:+CompileThreshold                                 // Использовать быстрый алгоритм профайлинга. Может помочь со скоростью загрузки, однако не всегда работает. <Не заработал>
  54. # -XX:AllocatePrefetchStyle=1                           // Включает предзагружку бОльшего количества скомпилированного кода. Флаг используется по-умолчанию в Java версий 9+
  55. # -XX:InitiatingHeapOccupancyPercent=50                 // Определяет процент памяти, когда следует запустить Garbage Collector. Более часто - меньше производительность, менее часто - меньше использованной памяти. Нужно тестировать значения