Сколько памяти нужно оставить ОС с приложением Java-сервера?
Предположим, я запускаю tomcat с -Xms256m -Xmx1024m, но хотел бы увеличить использование кучи.
Какой максимальный размер безопасной кучи я могу выделить?
Для целей этого вопроса, пожалуйста, предположим, что система имеет 5 ГБ ОЗУ и является системой z/Linux. Однако, если это возможно, я бы хотел получить более широкое практическое решение.
Также, если это дубликат, извините. Я был удивлен, что не нашел больше информации о такого рода вещах.
Не дубликат: я посмотрел здесь, однако, его ответ, кажется, просто предположение, без резервной копии. Другие ответы на этот вопрос не очень ясны и / или специфичны для моей проблемы. 1) Я не работаю в 32-битной системе Windows, 2) я не спрашивал о PermGen, хотя это может быть упомянуто в хорошем ответе, 3) Третий ответ сказал: "Наконец, вы также должны принять во внимание другое вещи, которые работают на сервере и которые тоже нуждаются в оперативной памяти ", но это не точный ответ. Сейчас я просто беспокоюсь об использовании памяти операционной системой.
Изменить: Это выделенная система, поэтому я больше всего беспокоюсь об использовании памяти ОС. Я не беспокоюсь о других программах.
GC
1 ответ
Максимальный размер кучи, который вы хотите назначить, будет зависеть от того, как ваша система использует свои собственные ресурсы, другие службы, которые вы используете, и т. Д. Вы хотите назначить размер кучи, который оставляет достаточный объем памяти для ОС, чтобы предотвратить ненужную подкачку памяти. Это больше проблема в Windows, но проблема видна и в Linux (я больше специалист по Windows, чем Linux, извините за это).
Во-первых, вы хотите проверить использование ресурсов вашей системы: http://www.cyberciti.biz/faq/linux-check-memory-usage/
Далее вы хотите увидеть, как настроен файл вашей страницы: http://www.cyberciti.biz/faq/linux-check-the-size-of-pagesize/
Затем вам нужно будет попробовать разные конфигурации, основанные на информации, которую вы собрали ранее, и следить за использованием файла подкачки: http://www.cyberciti.biz/faq/linux-check-swap-usage-command/
Если ваш файл подкачки часто используется, значит размер кучи слишком велик. Если он используется очень мало или не используется вообще, вы можете попытаться увеличить размер кучи для повышения производительности (Фактические результаты производительности могут отличаться для разных приложений Java, а увеличение размера кучи может ухудшить производительность некоторых приложений из-за того, как они запрограммированы).
Вы хотите убедиться, что вы назначаете соответствующий объем памяти, чтобы у вашей ОС было достаточно свободной оперативной памяти, чтобы легко поддерживать файл подкачки, а вашему приложению выделено достаточно памяти. В Windows я стараюсь поддерживать как минимум 25% свободной памяти под нагрузкой. Я бы попробовал разные конфигурации и посмотрел на производительность вашей системы.
Еще одно важное замечание: в Java 8 вам вообще не нужно определять эти элементы, кажется, Java 8 лучше поддерживает эти значения самостоятельно, а не назначает их статически.