Tomcat: настроить пропорции памяти
У меня есть экземпляр Tomcat, работающий на Windows 2008 Server с 4 ГБ оперативной памяти. Сервер предназначен для этого одного приложения, поэтому я бы очень хотел иметь возможность выделить большую часть оперативной памяти для Tomcat. Моя настройка Tomcat в настоящее время имеет следующие параметры Java:
-Xms256m
-Xmx1600m
Я хотел бы увеличить объем оперативной памяти, предпочтительно до 3 ГБ (очевидно, я знаю, как это сделать, просто увеличьте значение -Xmx). Тем не менее, Tomcat отказывается запускаться, если я увеличиваю максимальный объем кучи за пределы 1600 МБ. На нескольких сайтах, которые я прочитал, говорится, что Tomcat не может использовать более 40% доступной оперативной памяти, что, по-видимому, согласуется с тем, что я вижу.
Есть ли способ увеличить долю памяти, которую может использовать Tomcat, чтобы я мог увеличить объем памяти, который может использовать Tomcat?
Спасибо Рик
2 ответа
Несмотря на наличие 64-битного сервера, у меня была установлена только 32-битная Java/Tomcat. Я удалил Java и Tomcat и установил 64-битные версии, и все работало нормально. похоже, проблема была в том, что 32-битная Java может адресовать только 1,5 ГБ.
Спасибо Рик
Возможно, ваша проблема связана с ОС, а не с Tomcat / Java. ОС Windows ограничивает выделение памяти для 32-разрядного процесса всего 2 ГиБ (по умолчанию).
Причина, по которой он позволил вам выделить только около 1,5 ГБ пространства кучи, заключается в том, что для процесса выделена и другая память (издержки JVM / библиотеки, пространство perm gen и т. Д.).
Другие современные операционные системы [cough Linux] позволяют 32-битным процессам использовать все (или большинство) из адресуемого пространства 4 ГиБ.
Тем не менее, 64-разрядные ОС Windows могут быть настроены для увеличения предела 32-разрядных процессов до 4 ГиБ (3 ГБ на 32-разрядных):
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx
Однако, как вы правильно сделали, лучшее решение - использовать 64-битную JVM с вашей 64-битной ОС. Терабайт наваливает кого угодно: