Установка переполнения памяти Tomcat java_opts
Ответ 1
Установите начальную память для стартапа Tomcat
Его начальное пространство (то есть -xMS) составляет 1/64 физической памяти, а максимальное пространство (-xmx) -1/4 физической памяти. Вы можете использовать -xmn -xms -xmx и другие параметры, предоставленные JVM
Сделать настройки
3. Примеры, следующее дает ссылку на установку параметров Java JVM в среде памяти 1G:
Java_opts = " -server -xms800m -xmx800m
-Xx: permsize = 64m -xx: maxnewsize = 256m -xx: maxpermsize = 128m -djava.awt.headless = true "
Java_opts = " -server -xms768m -xmx768m -xx: permsize = 128m -xx: maxpermsize = 256m -xx:
Newsize = 192m -xx: maxnewsize = 384m "
Catalina_opts = " -server -xms768m -xmx768m -xx: permsize = 128m -xx: maxpermsize = 256m
-Xx: newsize = 192m -xx: maxnewsize = 384m "
Linux:
Catalina.sh в /ср/лалокал/apache-tomcat-5.5.23/bin
Добавлено: java_opts = ' -xms512m -xmx1024m'
Если вы хотите добавить «M», это означает, что это MB, в противном случае это будет KB, и при запуске Tomcat будет недостаточно памяти.
-Xms: начальное значение
-Xmx: максимальное значение
-Xmn: минимальное значение
Окна
Присоединяйтесь к Catalina.bat
Установите java_opts = -xms128m -xmx350m
Если вы начнете Tomcat с Startup.Bat, настройка OK вступит в силу. 200 -метровая память будет успешно выделена.
Однако, если вы не выполняете startup.bat для запуска Tomcat, но используйте службу системы Windows для запуска службы Tomcat, вышеуказанные настройки не вступит в силу.
То есть установить java_opts = -xms128m -xmx350m не работает. Если вы распределите 200 метров памяти выше, вы будете ...
Служба Windows выполняет bin/tomcat.exe. Он читает значение в реестре, а не на обстановке Catalina.bat.
Решение:
Измените реестр HKEY_LOCAL_MACHINE/Software/Apache Software Foundation/Tomcat Service Manager/Tomcat5/Parameters/JavaOptions
Исходное значение
-Dcatalina.home = "c:/apachgroup/tomcat 5.0"
-Djava.endorsed.dirs = "c:/apachgroup/tomcat 5.0/common/endorsed"
-Xrs
Добавить -xms300m -xmx350m
Перезагрузить службу Tomcat, и настройки вступают в силу
Ответ 2
Решение переполнения памяти JVM от JVM от JVM
Ключевое слово: решение переполнения памяти Tomcat
Недавно я знаком с проектом, который был разработан в течение нескольких лет. Мне нужно перенести базу данных из MySQL в Oracle. Во -первых, укажите соединение JDBC на MySQL, упакуте его в Tomcat и запустите его. Нет проблем. Однако, указывая на соединение JDBC на Oracle, Tomcat непрерывно бросает ошибку java.lang.outofmemoryerror, Google в Интернете, понимайте операционный механизм Tomcat и решайте проблему. Поделиться этим для справки.
1. Сначала: java.lang.outofmemoryerror: java heap space
объяснять:
Настройки размера кучи
Настройки кучи JVM относятся к настройкам пространства памяти, которые JVM может предоставить во время запуска программы Java. Когда JVM запустится, он автоматически установит значение размера кучи. Его начальное пространство (то есть -xMS) составляет 1/64 физической памяти, а максимальное пространство (-xmx) -1/4 физической памяти. Вы можете использовать -xmn -xms -xmx и другие параметры, предоставленные JVM, чтобы установить его. Размер размера кучи - это сумма молодого поколения и штатного рода.
Совет: это сообщение об исключении будет брошено, если для GC будет использоваться 98% времени, а доступный размер кучи составляет менее 2%.
Совет: максимальный размер кучи не должен превышать 80% доступной физической памяти. Как правило, установите параметры -xms и -xmx на то же самое, а -xmn -1/4 от значения -xmx.
Решение:
Установите размер кучи вручную
Измените tomcat_home/bin/catalina.bat и добавьте следующую строку в «echo», используя Catalina_base: $ catalina_base »:
Код Java
Установить java_opts =% java_opts% -server -xms800m -xmx800m -xx: maxnewsize = 256m
Установить java_opts =% java_opts% -server -xms800m -xmx800m -xx: maxnewsize = 256m
Или изменить Catalina.sh
Добавьте следующую строку в «Echo», используя Catalina_base: $ catalina_base ":
Java_opts = "$ java_opts -server -xms800m -xmx800m -xx: maxnewsize = 256m"
2. Во -вторых: java.lang.outofmemoryerror: permgen space
причина:
Полное название пространства PertGen - это пространство постоянного генерации, которое относится к области постоянного хранения памяти. Эта память в основном хранится JVM в классе и мета -информацией. Класс будет размещен в пространстве пермигена при его загрузке. Он отличается от области кучи, где хранится экземпляр класса (экземпляр). GC (Сборник мусора) не будет очищать пространство PertGen во время выполнения основной программы. Следовательно, если в вашем приложении много класса, очень вероятно, что ошибка пространства пермина. Эта ошибка распространена, когда веб -сервер предварительно компилирован JSP. Если вы используете большое количество сторонних банок под вашим веб-приложением, размер превышает размер JVM по умолчанию (4M), то это сообщение об ошибке будет сгенерировано.
Решение:
1. Вручную установите размер MAXPERMSIZE
Измените Tomcat_home/bin/catalina.bat (catalina.sh под Linux), в коде Java
"Echo" с использованием Catalina_Base: $ catalina_base "" добавляет следующую строку:
Установить java_opts =% java_opts% -server -xx: permsize = 128m -xx: maxpermsize = 512m
"Echo" с использованием Catalina_Base: $ catalina_base "" добавляет следующую строку:
Установить java_opts =% java_opts% -server -xx: permsize = 128m -xx: maxpermsize = 512m
Catalina.sh есть:
Код Java
Java_opts = "$ java_opts -server -xx: permsize = 128m -xx: maxpermsize = 512m"
Java_opts = "$ java_opts -server -xx: permsize = 128m -xx: maxpermsize = 512m"
Я также видел еще один пост и подумал, что это очень хорошо. Выдержки следующие:
Анализ java.lang.outofmemoryerror: permgen space
Я обнаружил, что многие люди приписывают проблему: Spring, Hibernate, Tomcat, потому что они динамически генерируют классы, вызывая постоянную кучу в JVM для переполнения. Тогда есть много разных мнений по решению. Некоторые люди говорят, что обновление версии Tomcat до последней, даже не требуется Tomcat. Некоторые люди также сомневаются в проблеме весны, и на весеннем форуме очень жарко, потому что использование Cblib весной, когда AOP динамически генерирует много классов.
Но вопрос заключается в том, почему та же проблема возникает с этими открытым исходным кодом Card, так что это более основная причина? Томкат ответил на это очень неясным способом в Q & A. Мы знаем этот вопрос, но этот вопрос возникает из более основного вопроса.
Таким образом, кто -то проверил более базовый JVM и нашел ключ к проблеме. Оказывается, что Sun's JVM делит память на разные области, одной из которых является область участника для хранения многих классов и описаний классов. Первоначально, когда было разработано Sun, считалось, что эта область была зафиксирована, когда JVM был запущен, но он не ожидал, что динамика будет так широко использоваться сейчас. Более того, в этой области есть специальный механизм сбора мусора. Текущая проблема заключается в том, что после динамической загрузки класса в эту область GC не может переработать его!
Для двух вышеупомянутых вопросов моя обработка:
Добавьте в первую линию Catalina.bat:
Код Java
Установить java_opts = -xms64m -xmx256m -xx: permsize = 128m -xx: maxnewsize = 256m -xx: maxpermsize = 256m
Установить java_opts = -xms64m -xmx256m -xx: permsize = 128m -xx: maxnewsize = 256m -xx: maxpermsize = 256m
Добавьте в первую линию Catalina.sh:
Код Java
Java_opts =
-Xms64m
-Xmx256m
-Xx: permsize = 128m
-Xx: maxnewsize = 256 м
-Xx: maxpermsize = 256 м
Идеальным решением переполнения памяти Tomcat в приведенной выше статье является весь контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.