| Название параметра | значение | Стандарты/Примечания |
| -XMS | Начальный размер кучи | 1/64 (<1 ГБ) физической памяти По умолчанию (параметр MinHeapFreeRatio можно настраивать) Когда свободная память кучи меньше 40%, JVM увеличивает кучу до максимального предела -Xmx |
| -XMX | Максимальный размер кучи | 1/4 физической памяти (<1 ГБ) по умолчанию (параметр MaxHeapFreeRatio можно настраивать) Когда свободная память кучи превышает 70%, JVM уменьшает кучу до минимального предела -xms |
| -XMN | Размер поколения (JDK 1.4 и выше) | После увеличения численности нового поколения размер старого поколения будет уменьшен. Это значение существенно влияет на производительность системы. Sun официально рекомендует конфигурацию на 3/8 от всего стека |
| -Хссс | Размер стека каждого потока | После JDK5.0 размер каждого стека потоков составлял 1M, а ранее размер каждого стека потока составлял 256K, что может быть в единицах K, M или G |
| -XX:ПотокСтекРазмер | Там же | 0 означает, что используется значение по умолчанию, и его нельзя объединить |
| -XX:PermSize | Установите начальное значение постоянной алгебры | 1/64 физической памяти |
| -XX:MaxPermSize | Установите максимальную постоянную генерацию | 1/4 физической памяти |
| -XX:NewRatio | Соотношение кайнозоя (включая Эдем и две зоны выживших) к старости (без учёта постоянного поколения) | -XX:NewRatio=4 означает, что отношение кайнозоя к старому веку равно 1:4, и кайнозой охватывает 1/5 всего стека, Xms=Xmx и Xmn устанавливаются, этот параметр не обязательно устанавливать. |
| -XX: Соотношение выживших | Соотношение размеров района Эдем к району Выживших | Если установить 8, соотношение двух регионов выживших к одному региону Эдема составляет 2:8, и один регион выжившего составляет 1/10 всего кайнозоя |
| -XX:LargePageSizeInBytes | Размер страницы памяти не стоит устанавливать слишком большим, так как это влияет на размер Perm | =128 м |
| -XX:+UseFastAccessorMethods | Быстрая оптимизация исходного типа | / |
| -XX:+DisableExplicitGC | Закрыть System.gc() | Этот параметр требует строгого тестирования |
| -XX: Максимальный порог постоянства | Максимальный возраст мусора | Если выставить 0, объект нового поколения войдёт в старую эру напрямую, не проходя через область выживших. Для старых применений эффективность может быть повышена. Если это значение установлено на большое значение, объект нового поколения будет копироваться несколько раз в области Survivor, что может увеличить время выживания объекта в новом поколении и увеличить вероятность повторного использования в новом поколении, что действует только для серийного ГК |
| -XX:+AggressiveOpts | Ускорение компиляции | / |
| -XX:+UseBiasedLocking | Улучшения производительности механизмов блокировки | / |
| -Xnoclassgc | Отключение переработки мусора | / |
| -XX:SoftRefLRUPolicyMSPerMB | Время выживания SoftReference на мегастопку свободного пространства | 1s |
| -XX:PretenureSizeThreshold | Размер объекта напрямую распределён с возрастом | Другой случай, когда новое поколение использует Parallel Scavenge GC, недопустим, а ещё один случай, когда он был напрямую назначен в старину, — это большой массив без внешних эталонных объектов в массиве. |
| -XX:TLABWasteTargetPercent | Процент TLAB в районе Эдена | 1% |
| -XX:+CollectGen0First | Будет ли YGC на первом месте, когда FullGC | false |
| -XX:+UseParallelGC | Полный GC использует параллельный MSC | См. [Параметры GC][1] |
| -XX:+UseParNewGC | Настройка нового поколения для параллельного сбора | Он может использоваться вместе с CMS collection, JDK 5.0 или новее, и JVM устанавливает его в соответствии с конфигурацией системы, поэтому нет необходимости устанавливать это значение снова |
| -XX:ParallelGCThreads | Количество резьбы для параллельного коллектора | Это значение лучше всего настраивать равным количеству процессоров и также подходит для CMS |
| -XX:+UseParallelOldGC | Старый метод сбора мусора назывался параллельным компактированием | Это параметр, который появляется в JAVA 6 |
| -XX:MaxGCPauseМиллис | Максимальное время сбора отходов нового поколения (максимальное время паузы) | Если это время не будет выполнено, JVM автоматически изменит размер нового поколения для достижения этого значения. |
| -XX:+UseAdaptiveSizePolicy | Автоматически выбирайте размер новой зоны генерации и соответствующее соотношение зоны выживших | Когда эта опция установлена, параллельный коллектор автоматически выбирает размер новой площади генерации и соответствующую долю площади выживших для достижения минимального соответствующего времени или частоты сбора, установленных целевой системой |
| -XX:GCTimeRatio | Установите время сбора мусора в процентах от времени работы программы | Формула равна 1/(1+n) |
| -XX:+ScavengeBeforeFullGC | Полный GC перед звонком в YGC | true |
| -XX:+UseConcMarkSweepGC | Использование коллекции памяти CMS | После настройки этого в тесте конфигурация -XX:NewRatio=4 недействительна, причина неизвестна, поэтому лучше использовать -Xmn для установки размера нового поколения на данный момент |
| -XX:+Агрессивная куча | Попытка — использовать много физической памяти | Для оптимизации долгосрочного использования большой памяти требуется проверка вычислительных ресурсов (память, количество процессоров, не менее 256 МБ памяти) |
| -XX:CMSFullGCsBeforePressaction | Сколько раз происходит сжатие памяти? | Поскольку конкурентный коллектор не сжимает и не организует пространство памяти, он создаёт «фрагментацию» после определённого времени, что снижает эффективность работы |
| -XX:+CMSParallelRemarkEnabled | Паузы нижнего маркера | / |
| -XX+UseCMSCompactAtFullCollection | Компрессия старости, когда это был FullGC | CMS не перемещает память, поэтому очень легко создать фрагментацию, что приводит к недостатку памяти, поэтому в этот момент будет включена компрессия памяти. Это хорошая привычка — увеличивать этот параметр. Это может повлиять на производительность, но устранить мусор |
| -XX:+UseCMSIinitiatingOccupancyOnly | Начните сбор CMS с ручной инициализации определения | HostSpot запрещён самостоятельно запускать CMS GC |
| -XX:CMSIinitiatingOccupancyFraction=70 | Сбор CMS начинается после того, как 70% мусора используется для переработки мусора | Это значение должно быть установлено так, чтобы соответствовать следующей формуле: CMSInitiatingOccupancyFraction |
| -XX:CMSIinitiatingPermOccupancyFraction | Установите использование Perm Gen так, чтобы срабатывать при достижении соотношения | 92 |
| -XX:+CMSIncrementalMode | Переведите режим инкрементального режима | Используется в корпусах с одним процессором |
| -XX:+CMSClassUnloadingEnabled | Постоянный CMS GC | / |
| -XX:+PrintGC | Вывод логарифма GC | То же самое, что и -verbose:gc |
| -XX:+PrintGCДetails | Там же | Подробнее |
| -XX:+PrintGCTimeStamps | Выходная метка времени GC | Используйте его с указанным выше параметром PrintGC или напишите что-то вроде -XX:+PrintGC:PrintGCTimeStamps |
| -XX:+PrintGC:PrintGCTimeStamps | / | Можно смешивать с -XX:+PrintGC -XX:+PrintGCДetails |
| -XX:+PrintGCApplicationStoppedTime | Время, когда программа останавливается во время сбора мусора для печати. Можно смешивать с вышеуказанным | Формат вывода: общее время остановки потоков приложений: 0,0468229 секунды |
| -XX:+PrintGCApplicationConcurrentTime | Печатайте время непрерывного выполнения программы перед каждым сбором мусора | Можно смешивать с вышеуказанным, выходная форма: время нанесения: 0,5291524 секунды |
| -XX:+PrintHeapAtGC | Распечатайте подробную информацию о стеке до и после GC | / |
| -Xloggc:имя файла | Логируйте соответствующую информацию журнала в файл для анализа | Работает с перечисленными выше |
| -XX:+PrintClassHistogram | После нажатия Ctrl+Break в консоли выведите информацию о классе | / |
| -XX:+PrintClassHistogramBeforeFullGC | FullGC до печати | / |
| -XX:+PrintTLAB | Просмотр использования пространства TLAB | / |
| XX:+PrintTenuringDistribution | Просмотр порога нового периода выживания после каждого малого ГК | / |
| -EA | Включить assert assert | / |
| -Xprof | Диагностика производительности | / |
| -Xrunhprof | Диагностика производительности | / |
| -XX:+TraceClassLoading | Печатает информацию о процессе загрузки классов | Похоже на [Loaded java.util.AbstractList$Itr from /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/rt.jar] |
| -XX:+TraceClassUnloading | Информация о процессе удаления класса печати | / |
| Xbootclasspath | Задаёт загрузку классов, не требующих проверок | Пропуск необходимых преднагрузочных проверок может сократить время загрузки, но это небезопасно |
| -XX:+PrintCompilation | Печатайте имя метода, которое Hotspot компилирует с помощью JIT | / |
| -XX:+HeapDumpOnOutOfMemoryError | OM при генерации куча дампа | Вывод по умолчанию находится в корневой папке, где хранятся файлы классов |
| -XX:HeapDumpPath | Задайте выходной путь дампа OM | Использование с -XX:+HeapDumpOnOutOfMemoryError |
| Название параметра | описание | По умолчанию |
| -d32 | Используйте 32-битную модель данных (если она есть) | / |
| -d64 | Используйте 64-битную модель данных (если она есть) | / |
| -сервер | Выберите серверную виртуальную машину | По умолчанию виртуальная машина — серверная, потому что вы работаете на серверной машине. |
| -cp < каталог и поиск классов zip/jar файлов > | / | / |
| -classpath < путь поиска классов для каталогов и файлов zip/jar > | Используйте : список отдельных каталогов, архивы JAR и архивы ZIP для поиска файлов классов | / |
| -D<名称>=<值> | Свойства системы множеств | / |
| -многословно: [класс или GC или JNI] | Включить подробный вывод | / |
| -Версия | Вывод версии продукта и выход | / |
| -<值>версия: | / | Устаревшие |
| -Showversion | Выведите версию продукта и продолжите | / |
| -jre-restrict-search или -no-jre-restrict-search | / | Устаревшие |
| -? -Справка | Выведите это сообщение помощи | / |
| -X | Помощь с выходом с нестандартными опциями | / |
| -ea[:< название посылки, название класса>] | assert | / |
| -enableassertions[:< название пакета, имя класса>] | Включите утверждения при заданной детализированности | / |
| -da[:< название пакета, название класса>] | / | / |
| -disableassertions[:< название пакета, название класса>] | Отключить утверждения с заданной гранулярностью | / |
| -esa или -enablesystemassertions | Включить системные утверждения | / |
| -DSA или -disablesystemassertions | Отключить утверждения системы | / |
| -agentlib:<libname>[=<选项>] | Загрузите нативную библиотеку <libname>агентов | Например, -agentlib:hprofСм. также -agentlib:jdwp=help и -agentlib:hprof=help |
| -agentpath:<pathname>[=<选项>] | Загрузите локальную библиотеку агентов по полному названию пути | / |
| -javaagent:<jarpath>[=<选项>] | Для загрузки агента языка программирования Java см. java.lang.instrument | / |
| -всплеск:<imagepath> | Покажите заставку с указанным изображением | / |