Откройте каталог установки IDEA и посмотрите, что есть каталог BIN с двумя файлами VMOPTIONS, которые необходимо настроить для различных JDK:
32 бит: Idea.exe.vmoptions
64 бит: идея64.exe.vmoptions
-Xms512m -xmx1024m -xx: maxpermsize = 512m -xx: ReservedCodeCachesize = 225m -xx:+useConcmarksWeepgc -xx: softreflruporolocymyMspermb = 50 -DUn.io.usecancaches = false -djava.net.new.cle.nehfer.
Приведенный выше список - это содержание по умолчанию idea64.exe.vmoptions , которое мы можем изменить по мере необходимости.
Значения каждого параметра:
1. Установите настройки памяти JVM
1. Есть четыре параметра для установки памяти JVM:
-Xmx Java Heap Maximum, значение по умолчанию составляет 1/4 физической памяти. Оптимальное значение настройки должно зависеть от размера физической памяти и других накладных расходов на память на компьютере;
-Xms java Heap Начальное значение. Лучше всего для сервера JVM установить -XMS и -xmx на то же значение. JVM машины разработки и тестирования может сохранить значение по умолчанию;
-Xmn Java Heap Young Sifeme, лучше всего сохранить значение по умолчанию, если вы не знакомы с этим;
-Xss Размер стека каждого потока, лучше всего сохранить значение по умолчанию, если вы не знакомы с ним;
2. Как настроить распределение памяти JVM:
(1) При запуске и использовании JVM в командной строке (эффективно только для тестирования класса в настоящее время):
java -xmx128m -xms64m -xmn32m -xss16m тест
(2) При запуске и использовании JVM в интегрированной среде разработки (например, Eclipse):
а Open Eclipse.ini в корневом каталоге Eclipse, а содержимое по умолчанию составляет (распределение памяти JVM установлено здесь для запуска текущего инструмента разработки):
-vmargs означает, что следующие параметры настройки виртуальной машины. Вы можете изменить значения параметров в нем или добавить -xmn и -xss. Кроме того, не HEAP память может быть установлена в Eclipse.ini, например: -xx: permsize = 56m, -xx: maxpermsize = 128m.
Значения параметров, установленные здесь, могут быть отображены в строке состояния инструмента разработки через следующую конфигурацию:
Содержание файла создать параметры файла в корневом каталоге Eclipse: org.eclipse.ui/perf/showHeapStatus=true
Измените файл eclipse.ini в корневом каталоге Eclipse и добавьте следующее содержимое в начале:
Перезапустите Eclipse, и вы можете видеть, что в строей ниже статуса есть больше информации JVM.
беременный Open Eclipse-Window-Preferences-Java-установленная JRE (эффективно для всех программ Java, работающих в текущей среде разработки)
Редактировать в настоящее время используется JRE, Enter: -xmx128m -xms64m -xmn32m -xss16m
в Открыть приложение Eclipse-Run-Java (эффективное только для классов Set Java)
Выберите класс, чтобы установить распределение памяти -аргумент, введите аргумент VM: -xmx128m -xms64m -xmn32m -xss16m
Примечание. Если B и C установлены одновременно в той же среде разработки, настройка B вступает в силу, и настройка C является недействительной, например:
Настройка среды разработки: -xmx256m, а настройка теста класса: -xmx128m -xms64m, настройка, которая вступает в силу при запуске теста:
-Xmx256m -Xms64m
(3) При запуске и использовании JVM в среде сервера (например, Tomcat) (поэтому программы Java вступают в силу в текущей среде сервера):
а Установить переменные среды:
Имя переменной: Catalina_opts
Переменное значение: -xmx128m -xms64m -xmn32m -xss16m
беременный Откройте папку корзины в корневом каталоге Tomcat, Edit Catalina.bat и замените �talina_opts% (всего четыре места) на: -xmx128m -xms64m -xmn32m -xss16m
2. Проверьте информацию о памяти JVM
Runtime.getRuntime (). MaxMemory (); // максимальная доступная память, соответствующая -xmx
Runtime.getRuntime (). Freememory (); // текущая свободная память JVM
Runtime.getRuntime (). TotalMemory (); // Общая память, занятая текущей JVM, эквивалентна сумме памяти, используемой текущей JVM и Freememory ()
О MaxMemory (), Freememory () и TotalMemory ():
maxmemory () -максимально доступная память о JVM, которую можно установить через -xmx. Значение по умолчанию составляет 1/4 физической памяти, а установленное значение не может быть выше, чем физическая память компьютера;
TotalMemory () - это общая память, занятая текущей JVM, и его значение эквивалентно сумме памяти, используемой текущей JVM и Freememory (), которая будет увеличиваться по мере увеличения памяти;
Freememory () - текущая свободная память JVM. Поскольку JVM занимает физическую память только тогда, когда необходима память, значение Freememory (), как правило, очень мало. Фактическая доступная память о JVM не равна Freememory (), но должна быть равна maxmemory ()-totalmemory ()+freememory (). Он устанавливает распределение памяти JVM.
Смотрите официальную документацию:
http://docs.sun.com/source/819-0084/pt_tuningjava.html
Параметры запуска Java разделены на три категории;
Одним из них являются стандартные параметры (-), все реализации JVM должны реализовать функции этих параметров и быть обратно совместимыми;
Второе-нестандартные параметры (-x). JVM по умолчанию реализует функции этих параметров, но он не гарантирует, что все реализации JVM удовлетворены и не гарантируют обратную совместимость;
Третий-нестабильные параметры (-xx). Каждая реализация таких параметров JVM будет отличаться и может быть отменена в любое время в будущем. Это должно использоваться с осторожностью;
Более полезен среди стандартных параметров:
многословный
-Вербоз: класс
Выключите соответствующую информацию о загрузке класса JVM, и это может быть использовано для диагностики, когда JVM сообщает, что класс не может быть найден или конфликты класса.
-Вербоз: GC
Выводит соответствующую ситуацию каждого GC.
-Вербоз: JNI
Выводит соответствующую ситуацию нативных вызовов метода, которая обычно используется для диагностики информации об ошибке вызова JNI.
Нестандартные параметры также называются расширенными параметрами
Наиболее часто используется
-XMS512M Установите JVM, чтобы память была 512 м. Это значение может быть установлено так же, как -xmx, чтобы избежать перераспределяющей памяти JVM каждый раз, когда сборка мусора завершается.
-Xmx512m, установите максимальную доступную память JVM до 512 м.
-Xmn200m: установите размер молодого поколения на 200 м. Вся размер кучи = размер молодого поколения + размер старого поколения + постоянный размер генерации. Постоянное поколение обычно фиксируется размером 64 м, поэтому после увеличения молодого поколения размер старшего поколения будет уменьшен. Это значение оказывает большое влияние на производительность системы, и Sun официально рекомендует настройку как 3/8 всей кучи.
-Xss128k:
Устанавливает размер стека для каждого потока. После JDK5.0 размер стека каждого потока составляет 1 м, а в прошлом размер стека каждого потока составляет 256 тыс. Больше потоков применения требует размера памяти для настройки. В той же физической памяти уменьшение этого значения может генерировать больше потоков. Тем не менее, операционная система по -прежнему имеет ограничение на количество потоков в процессе и не может быть получена бесконечно, с значениями опыта в диапазоне от 3000 до 5000.
-Xloggc: файл
Подобно функции -вербозе: GC, она записывает только соответствующую ситуацию каждого события GC в файл. Расположение файла лучше всего подходит для того, чтобы избежать потенциальных проблем сети.
Если команда словеса появляется в командной строке одновременно, -xloggc должен преобладать.
-Xprof
Отслеживает запуск программ и выводит данные отслеживания на стандартном выходе; Подходит для отладки среды развития.
Список параметров с -xx в качестве префикса может быть незапрошенным в JVM, а солнце не рекомендуется, и его можно отменить без уведомления в будущем; Однако многие из этих параметров действительно очень полезны для нас, такие как -xx: permsize, -xx: maxpermsize и т. Д., Которые мы часто видим;
Во -первых, давайте введем поведенческие параметры:
| Параметры и значения их по умолчанию | описывать |
| -Xx: -disableExplicitGC | System.gc () запрещена; Но GC JVM все еще действителен |
| -Xx:+maxfdlimit | Максимизировать предел количества файловых дескрипторов |
| -Xx:+Scavengebeforfullgc | Следующее поколение GC имеет приоритет над полным исполнением GC |
| -Xx:+usegcoverheadlimit | Ограничьте долю времени, проведенного на GC JVM, прежде чем бросить OOM |
| -Xx: -useconcmarksweepgc | GC для старшего поколения с использованием алгоритма обмена одновременной марки |
| -Xx: -useparallelgc | Включить параллельный GC |
| -Xx: -useparalleloldgc | Включите параллелизм для полного GC, и этот элемент автоматически включен при включении -xx: -Useparallelgc. |
| -Xx: -useSerialgc | Включить серийный GC |
| -Xx:+usethreadpriorities | Включить приоритет локального потока |
Три параметра жирного шрифта в приведенной выше таблице представляют собой выполнение GC в JVM
Есть три способа линии, а именно серийный, параллельный и параллелизм;
Serialgc - это метод GC по умолчанию JVM. Как правило, он подходит для небольших приложений и отдельных процессоров. Алгоритм относительно прост, и эффективность GC высока, но он может вызвать паузы для применения;
PARALLELGC относится к времени выполнения GC, что не оказывает влияния на работу приложения. Потоки GC и приложения выполняются одновременно, так что операция приложения не затронута в максимальной степени;
Параллелизм (concmarksweepgc) относится к нескольким потокам, которые выполняют GC одновременно. Как правило, он подходит для многопроцессорных систем. Это может повысить эффективность GC, но алгоритм сложный, и система много потребляет;
Список параметров настройки производительности:
| Параметры и значения их по умолчанию | описывать |
| -Xx: laignpagesizeinbytes = 4M | Установите большой размер страницы для Java Heap |
| -Xx: maxheapfreeratio = 70 | Наибольшая доля суммы холостого хода в куче Java после GC |
| -Xx: maxnewsize = size | Максимальное значение памяти, которое может занять недавно сгенерированный объект |
| -Xx: maxpermsize = 64M | Максимальное значение памяти, которое могут занять объекты старшего поколения |
| -Xx: minheapfreeratio = 40 | Минимальная доля суммы холостого хода в куче Java после GC |
| -Xx: newratio = 2 | Соотношение емкости памяти нового поколения к емкости в памяти старого поколения |
| -Xx: newsize = 2,125 м | Значение памяти по умолчанию занимает при создании объектов нового поколения |
| -Xx: ReservedCodeCachesize = 32 м | Держите емкость памяти занятой кодом |
| -Xx: ThreadStackSize = 512 | Установите размер стека. Если это 0, используйте значение системы по умолчанию. |
| -Xx:+uselargepages | Используйте большую память страницы |
В нашей ежедневной настройке производительности мы в основном будем использовать эти атрибуты вышеупомянутого жирного шрифта;
Список параметров отладки:
| Параметры и значения их по умолчанию | описывать |
| -Xx: -ciTime | Печать потребляет время в компиляции JIT |
| -Xx: errorfile =./Hs_err_pid <pid> .log | Сохранить журналы ошибок или данные в файлы |
| -Xx: -extendeddtraceprobes | Включите зонд DTRACE, специфичный для Solaris |
| -Xx: heapdumppath =./Java_pid <pid> .hprof | Укажите путь или имя файла при экспорте информации о куче |
| -Xx: -Heapdumponoutofmemoryerror | Экспортная соответствующая информация в куче, когда впервые встречается с OOM |
| -Xx: | Запустите пользовательские команды после появления фатальной ошибки |
| -Xx: onoutofmemoryerror = "<Cmd args>; <cmd args>" | Выполните пользовательские команды, когда встречаются OOM в первый раз |
| -Xx: -printclasshistogram | Печать столбчатая информация о экземпляре класса после встречи с CTRL -Break, так же, как функция JMAP -Histo |
| -Xx: -printconcurrentlocks | Распечатайте соответствующую информацию о одновременной блокировке после встречи с CTRL -Break, та же функция, что и JSTACK -L |
| -Xx: -printcommandlineflags | Распечатайте отметку, которая появляется в командной строке |
| -Xx: -printcompilation | Отпечатайте соответствующую информацию при составлении метода |
| -Xx: -printgc | Печатать соответствующую информацию каждый раз, когда GC |
| -Xx: -printgc детали | Детали распечатки каждый раз gc |
| -Xx: -printgctimestamps | Распечатайте временную метку каждого GC |
| -Xx: -traccalsloading | Отслеживайте информацию о загрузке класса |
| -Xx: -traceccalloadingpreorder | Отслеживать информацию о загрузке всех классов, на которые ссылаются |
| -Xx: -tracecclassResolution | Отслеживание постоянного бассейна |
| -Xx: -traceclassUnloading | Информация о удалении класса отслеживания |
| -Xx: -traceloaderconstraints | Отслеживание информации о ограничениях загрузчика класса |
Суммировать
Выше приведено метод операции установки JVM -запущенных параметров идеи IntelliJ, введенной вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!