Предположим, я запускаю tomcat с -Xms256m -Xmx1024m, но хотел бы увеличить использование кучи.
Каков самый большой размер безопасной кучи, который я могу выделить?
Для ответа на этот вопрос предположим, что система имеет 5 ГБ ОЗУ и является системой z / Linux. Однако, если возможно, я хотел бы получить более широкий практический ответ.
Кроме того, если это дубликат, извините. Я был удивлен, что не нашел дополнительной информации по этому поводу.
Не дубликат: я смотрел на ВотОднако его ответ кажется лишь предположением, без всякой поддержки. Другие ответы на этот вопрос не очень ясны и / или не относятся к моей проблеме. 1) Я не использую 32-битную оконную систему, 2) Я не спрашивал о PermGen, хотя это может быть упомянуто в хорошем ответе, 3) В третьем ответе говорилось: «Наконец, вы также должны принять во внимание другой вещи, которые работают на сервере и которым тоже нужна оперативная память », но это не точный ответ. Меня просто беспокоит использование памяти ОС.
Редактировать: Это выделенная система, поэтому меня больше всего беспокоит использование памяти ОС. Меня не волнуют другие программы.
GC
Максимальный размер кучи, который вы хотите назначить, будет зависеть от использования вашей системой собственных ресурсов, других запущенных вами служб и т. Д. Вы хотите назначить размер кучи, который оставляет достаточно памяти для ОС, чтобы предотвратить ненужную подкачку памяти. Это больше проблема в 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, кажется, лучше поддерживает эти значения самостоятельно, а не статически их назначает.