JVM-Аргументы Xms и размер разрешения

У меня есть JVM, которую я запускаю со следующими параметрами: -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled -Xmx2048m
Чтобы повысить производительность, следует ли добавить Xms и XX:PermSize? Какое значение подходит для Xms и XX: PermSize (в процентах от максимального или равно максимальному)?
Как я могу проверить производительность (время запуска и т. д.) в Linux.

Спасибо большое


person Dusty    schedule 13.02.2015    source источник
comment
Что вы имеете в виду под большей производительностью?   -  person Paul Medcraft    schedule 13.02.2015
comment
Если я поставлю мин , то подумаю, что это t have to do always the memory check and allocated extra memory and take memory out when it doesnне нужно. Таким образом, поскольку проверок меньше, он должен быть более производительным, поскольку выделяется память (по крайней мере, мин). Дайте мне знать, если я ошибаюсь   -  person Dusty    schedule 13.02.2015
comment
если вы явно не задаете минимальное значение кучи, будет вычислено минимальное значение для вашей кучи на основе используемой вами версии Java и машины, на которой вы ее запускаете. Так что не беспокойтесь об этом, если вы не видите слишком много полных сборщиков мусора для своего приложения :)   -  person Arkantos    schedule 13.02.2015
comment
угадать значение этих флагов очень сложно без фактического мониторинга вашего приложения. Придерживайтесь значений по умолчанию и пытайтесь настроить его только в том случае, если вы знаете, что делаете, иначе вы можете сделать его еще хуже. Если вы хотите отслеживать/профилировать свое приложение, я предлагаю вам взглянуть на VisualVM   -  person Arkantos    schedule 13.02.2015


Ответы (1)


Флаг Xms появился еще до того, как в JVM появилась инкрементная сборка мусора, поэтому было выгодно, чтобы куча была как можно меньше (чтобы сборка мусора была как можно короче). Таким образом, вы зарезервируете соответствующий максимальный объем памяти при запуске с флагом Xmx, но зафиксируете только меньший фрагмент с помощью Xms.

Теперь у нас есть инкрементальные сборщики мусора поколения, часто оптимально установить Xms и Xmx в одно и то же значение. Это позволяет избежать необходимости динамически выделять больше памяти для кучи, что требует полной сборки мусора, что может негативно сказаться на производительности.

Если вы запустите свое приложение с низким значением для Xms и включите ведение журнала GC (-verbose:gc -Xloggc:FILENAME), файл журнала покажет, как изменяются размеры кучи и поколения по мере выполнения приложения, и даст вам представление о том, насколько память, которая действительно понадобится вашему приложению.

person Paul Medcraft    schedule 13.02.2015