1. Сбор проблем настройки памяти Tomcat
При использовании Java -программ для запроса большого количества данных из базы данных или загрузки пакета JAR на серверах приложений (например, Tomcat, JBoss, WebLogic). Появится исключение java.lang.outofmemoryerror. Это в основном вызвано недостаточной памятью на сервере приложений. Это исключение часто имеет следующие ситуации (в качестве примера, принимая среду Tomcat, другие веб -серверы, такие как JBoss, WebLogic и т. Д., Это одинаковы):
1. java.lang.outofmemoryerror: permgen space
Полное название пространства PertGen - это пространство для постоянного генерации, которое относится к области постоянного хранения памяти OutOfMemoryError: PertGen Space. С точки зрения текста, это переполнение памяти, и решение состоит в том, чтобы увеличить память. Почему память переполняется? Это связано с тем, что эта память в основном хранится JVM в классе и мета -информации. Класс помещается в зону пространства пермигена при его загрузке. Он отличается от области кучи, где хранится экземпляр. GC (Сборник мусора) не будет очищать пространство пермина во время основного запуска программы. Поэтому, если ваше приложение загрузит много класса, вполне вероятно, что произойдет ошибка пространства пермигена. Эта ошибка распространена, когда веб-сервер предварительнокомпилирует JSP. Если вы используете большое количество сторонних банок под вашим веб-приложением, размер превышает размер JVM по умолчанию (4M), то это сообщение об ошибке будет сгенерировано.
Решение: вручную установите размер MAXPERMSIZE
а Если Tomcat запускается в режиме BAT, следующие настройки:
Изменить tomcat_home/bin/catalina.sh
Добавьте следующую строку в «Echo», используя Catalina_base: $ catalina_base ":
Java_opts = " -server -xx: permsize = 64m -xx: maxpermsize = 128m
беременный Если Tomcat зарегистрирован как служба Windows и запускается в службах, необходимо изменить соответствующее значение ключа в реестре.
Откройте реестр и найдите каталог hkey_local_machine/Software/Apache Software Foundation/Procrun 2.0/Htfty/Parameters/Java. Красный маркирован (например, HTFTY) в адресе каталога должен быть изменен в соответствии с различными ситуациями и регистрирует службу Tomcat в качестве имени службы Windows. Вы можете увидеть элементы JVMMS и JVMMX, где JVMMS устанавливает наименьшие параметры использования памяти, а JVMMX устанавливает наибольшие параметры использования памяти. Установите значения JVMMS и JVMMX и перезагрузите сервер Tomcat, чтобы вступить в силу.
Рекомендация: переместите один и тот же сторонний файл JAR в каталог Tomcat/Shared/Lib, чтобы уменьшить повторное использование памяти документов JAR.
2. java.lang.outofmemoryerror: java gup space
Настройки кучи JVM относятся к настройкам пространства памяти, которые JVM может предоставить во время операции программы Java. Когда JVM начнется, он автоматически установит значение размера кучи. Его начальное пространство (то есть -xMS) составляет 1/64 физической памяти, а максимальное пространство (-xmx) -1/4 физической памяти. Вы можете использовать -xmn -xms -xmx и другие параметры, предоставленные JVM, чтобы установить его. Размер размера кучи - это сумма молодого поколения и штатного рода. Это сообщение об исключении будет брошено, если 98% случаев будет использоваться для GC, а доступный размер кучи составляет менее 2%.
Решение: установите размер кучи вручную
а Если Tomcat запускается в режиме BAT, следующие настройки:
Изменить tomcat_home/bin/catalina.sh
Добавьте следующую строку в «Echo», используя Catalina_base: $ catalina_base ":
Java_opts = " -server -xms800m -xmx800m -xx: maxnewsize = 256m"
беременный Если Tomcat зарегистрирован как служба Windows и запускается в службах, необходимо изменить соответствующее значение ключа в реестре.
Откройте реестр и найдите каталог hkey_local_machine/Software/Apache Software Foundation/Procrun 2.0/Htfty/Parameters/Java. Красный маркирован (например, HTFTY) в адресе каталога должен быть изменен в соответствии с различными ситуациями и регистрирует службу Tomcat в качестве имени службы Windows. Вы можете увидеть элементы JVMMS и JVMMX, где JVMMS устанавливает наименьшие параметры использования памяти, а JVMMX устанавливает наибольшие параметры использования памяти. Установите значения JVMMS и JVMMX и перезагрузите сервер Tomcat, чтобы вступить в силу.
Совет: максимальный размер кучи не должен превышать 80% доступной физической памяти. Как правило, установите параметры -xms и -xmx на то же самое, а -xmn -1/4 от значения -xmx.
2. Сам Томкат не может работать непосредственно на компьютере, и ему необходимо полагаться на операционную систему на основе оборудования и виртуальной машины Java. Когда программа Java запускается, JVM выделяет начальную память и максимальную память приложению. Эта начальная память и максимальная память в определенной степени повлияют на производительность программы. Например, когда приложение использует максимальную память, JVM должен сначала сделать сбор мусора и выпустить некоторую занявшую память. Поэтому, если вы хотите настроить начальную память и максимальную память Tomcat при запуске, вам необходимо объявить ее JVM. Как правило, программы Java могут регулировать начальную память и максимальную память приложения через -xms -xmx при запуске: размеры этих двух значений обычно устанавливаются в соответствии с потребностями. Размер кучи инициализации выполняет размер памяти. Виртуальная машина запрашивает систему при запуске. Вообще говоря, этот параметр не важен. Тем не менее, некоторые приложения будут быстро занимать больше памяти при больших нагрузках. В настоящее время этот параметр очень важен. Если используемая память установлена маленькой, когда виртуальная машина запускается, и в этом случае многие объекты инициализируются, виртуальная машина должна многократно увеличивать память, чтобы удовлетворить использование. По этой причине мы, как правило, устанавливаем -XMS и -XMX таким же размером, и максимальное значение кучи ограничено физической памятью, используемой системой. Как правило, приложения с большими объемами данных будут использовать постоянные объекты, а использование памяти может быстро расти. Когда память, требуемая приложением, превышает максимальное значение кучи, виртуальная машина заставит переполнение памяти и приведет к сбою службы приложения. Следовательно, обычно рекомендуется установить максимальное значение кучи до 80% от максимального значения доступной памяти.
Tomcat может использовать память по умолчанию 128 МБ. В более крупных прикладных проектах этой памяти недостаточно и необходимо увеличить. Есть несколько способов выбрать:
Первый метод:
Под Windows, в файле /bin/catalina.bat, unix, перед файлом /bin/catalina.sh, добавьте следующие настройки:
Java_opts = '-xms 【Инициализировать размер памяти】 -xmx 【Максимальная память, которую можно использовать】'
Значения этих двух параметров должны быть увеличены. Например:
Java_opts = ' -xms256m -xmx512m'
Это означает, что память инициализации составляет 256 МБ, а максимальная память, которая может быть использована, составляет 512 МБ.
Второй метод: установите имя переменной в переменной среды: java_opts value value: -xms512m -xmx512m
Третий метод: первые два метода направлены на ситуацию, когда Catalina.Bat находится в каталоге BIN (например, Tomcat, который непосредственно декомпрессируется и т. Д.), Но в некоторых инсталляционных версиях Tomcat нет Catalina.bat. В настоящее время можно использовать следующий метод. Конечно, этот метод также является наиболее общим методом: Откройте Tomcathome // bin // tomcat5w.exe, нажмите на вкладку Java, и вы обнаружите, что есть два элемента: Pirit Memory Pool и Maximum Pool. Максимальный пул памяти Это максимальный размер памяти. После настройки нажмите, нажмите OK и перезапустите Tomcat. Вы обнаружите, что память, доступная JVM в Tomcat, изменилась.
Еще одна вещь, которую следует рассмотреть, - это механизм сбора мусора, предоставленный Java. Размер кучи виртуальной машины определяет время и частоту расходов виртуальной машины на сбор мусора. Приемлемая скорость сбора мусора связана с применением и должна быть отрегулирована путем анализа времени и частоты фактической сбора мусора. Если размер кучи велик, то полная сбор мусора будет медленной, но частота будет уменьшена. Если вы сделаете размер кучи в соответствии с потребностями памяти, полная коллекция будет быстрой, но она будет более частой. Цель изменения размера кучи состоит в том, чтобы минимизировать время сбора мусора, чтобы максимизировать обработку запросов клиентов в течение определенного времени. Во время сравнительного анализа, чтобы обеспечить наилучшую производительность, размер кучи должен быть большим, чтобы гарантировать, что сборы мусора не происходят в течение всего процесса сравнительного анализа. Если система тратит много времени на сбор мусора, уменьшите размер кучи. Полная коллекция мусора не должна превышать 3-5 секунд. Если сборы мусора становится узким местом, то необходимо указать размер генерации, проверен подробный выходной сигнал сбора мусора, и изучается влияние параметров сбора мусора на производительность. Вообще говоря, вы должны использовать 80% физической памяти в качестве размера кучи. При добавлении процессора не забудьте увеличить память, потому что распределения могут быть выполнены параллельно, в то время как сбор мусора не параллельно.
Обратите внимание: рекомендуется сузить разницу между самым высоким значением и самым низким значением, в противном случае много памяти будет потрачено впустую. Наименьшее значение увеличивается, и самое высокое значение может быть установлено по желанию, но оно должно основываться на фактической физической памяти. Если настройка памяти слишком велика, например, максимальная память установлена, но если нет 512M доступной памяти, Tomcat не может быть запущена. Может быть ситуация, когда память перерабатывается системой и завершает процесс.
Вышеупомянутый метод реализации переполнения памяти Tomcat и корректировки размера - это все контент, которым я поделился с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.