Подтвердить что ты не робот

Как увеличить кучу Java кучи для приложения tomcat

Есть много вопросов, которые задают этот или аналогичный вопрос.

Все они дают команду, которая должна быть выполнена, что я не понимаю, где я пишу эту команду. Я хочу постоянно увеличивать пространство кучи для моих приложений tomcat.

Я читаю эту страницу http://javahowto.blogspot.com/2006/06/6-common-errors-in-setting-java-heap.html, и это говорит в разделе Tomcat

Остановите сервер Tomcat, установите переменную среды CATALINA_OPTS, а затем перезапустите Tomcat. Посмотрите файл tomcat-install/bin/catalina.sh или catalina.bat для использования этой переменной. Например,

установить CATALINA_OPTS = -Xms512m -Xmx512m (Windows, нет "вокруг значения)
export CATALINA_OPTS =" - Xms512m -Xmx512m "(ksh/bash," "вокруг значения)
setenv CATALINA_OPTS" -Xms512m -Xmx512m "(tcsh/csh," " вокруг значения)

Итак, я заменил строку

установить CATALINA_OPTS =

с

установить CATALINA_OPTS = -Xms512m -Xmx512m

Но я все еще получаю ошибку.

javax.servlet.ServletException: выполнение сервлета вызвало исключение

Основная причина

java.lang.OutOfMemoryError: пространство кучи Java     java.lang.reflect.Array.multiNewArray(собственный метод)     java.lang.reflect.Array.newInstance(Array.java:90)     nom.tam.util.ArrayFuncs.newInstance(ArrayFuncs.java:1028)     nom.tam.fits.ImageData.read(ImageData.java:259)     nom.tam.fits.Fits.readHDU(Fits.java:573)     controller.UploadServlet.retreiveFITSFileFields(UploadServlet.java:206)     controller.ScanServerFiles.doPost(ScanServerFiles.java:39)     javax.servlet.http.HttpServlet.service(HttpServlet.java:637)     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

4b9b3361

Ответ 1

Возможно, ваши изменения будут работать. Требуется ли вашему приложению много памяти - трассировка стека показывает некоторые связанные с изображениями функции.

Я предполагаю, что ошибка происходит сразу, с большим файлом или происходит позже после нескольких запросов.

Если ошибка происходит сразу, вы можете еще больше увеличить память или выяснить, почему столько памяти требуется для одного файла.

Если ошибка возникает после нескольких запросов, тогда у вас может быть утечка памяти - там, где объекты не возвращаются сборщиком мусора. Использование такого инструмента, как JProfiler может помочь вам контролировать, сколько памяти используется вашей виртуальной машиной, и может помочь вам увидеть, что использует эту память, и почему объекты не возвращаются сборщиком мусора.

Ответ 2

Существует механизм для этого, не изменяя файлы, находящиеся в дистрибутиве. Вы можете создать отдельный файл %CATALINA_HOME%\bin\setenv.bat или $CATALINA_HOME/bin/setenv.sh и поместить туда переменные окружения. Кроме того, настройки памяти применяются к JVM, а не Tomcat, поэтому я бы установил вместо переменной JAVA_OPTS:

set JAVA_OPTS=-Xmx512m

Ответ 3

В первую очередь вы не можете изменить настройки памяти только для приложения tomcat, а скорее для всего экземпляра tomcat.

Если вы используете tomcat с консоли (с помощью startup.bat), вам нужно будет отредактировать файл catalina.bat и поиграть с CATALINA_OPTS. Например:

set CATALINA_OPTS=-Xms512m -Xmx512m

Перезапуск tomcat применит новые настройки.

Если вы все еще получаете OutOfMemoryError, вам нужно знать, сколько памяти требуется вашему приложению в данный момент (nom.tam.util.ArrayFuncs...). Вам нужно либо оптимизировать приложение, либо просто увеличить память, предоставленную tomcat.

Ответ 4

  • Откройте вкладку сервера в eclipse
  • щелкните правой кнопкой мыши
  • нажмите на открытую конфигурацию lauch
  • Перейти к аргументам
  • Здесь вы можете добавить в аргументы VM после одобрения

    -Xms64m -Xmx256m
    

Ответ 5

Если вы используете Windows, это очень просто. Просто перейдите к переменным System Environnement (правый клик Computer > Properties > Advanced System Parameters > Environnement Variables); создайте новую системную переменную с именем = CATALINA_OPTS и значением = -Xms512m -Xmx1024m. перезагрузите Tomcat и наслаждайтесь!

Ответ 6

Вам нужно добавить следующие строки в файл catalina.sh.

export CATALINA_OPTS="-Xms512M -Xmx1024M"

ОБНОВЛЕНИЕ: catalina.sh контент четко говорит -

Не устанавливайте переменные в этом script. Вместо этого поместите их в script setenv.sh в CATALINA_BASE/bin, чтобы ваши настройки были раздельными.

Итак, вы можете добавить выше в setenv.sh вместо этого (создать файл, если он не существует).

Ответ 7

Просто установите эту дополнительную строку в файле catalina.bat

ЛИНИЯ НЕТ ВОКРУГ: 143

set "CATALINA_OPTS=-Xms512m -Xmx512m"

И перезапустите сервис Tomcat

Ответ 8

Самый простой способ сделать это: (в Linux/Ububuntu и т.д.)

Перейдите в каталог tomcat bin:

cd /opt/tomcat8.5/bin

создайте новый файл в каталоге bin "setenv.sh" и сохраните в нем записи, указанные ниже.

export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx2048m"
export CATALINA_OPTS="$CATALINA_OPTS -XX:MaxPermSize=256m"

и выполните команду:

./catalina.sh run

В вашем лог файле catalina вы можете увидеть такую запись:

INFO [main] VersionLoggerListener.log Command line argument: -Xms512m
INFO [main] VersionLoggerListener.log Command line argument: -Xmx2048m
INFO [main] VersionLoggerListener.log Command line argument: -XX:MaxPermSize=256m

Что подтверждает, что вышеуказанные изменения произошли.

Кроме того, значения "Xms512m" и "-Xmx2048m" могут быть изменены соответствующим образом в файле setenv.sh.

Запуск Tomcat также может быть выполнен в два этапа. cd/opt/tomcat8.5/bin

Step #1
run ./setenv.sh 
Step #2
./startup.sh

Ответ 9

вы можете установить это в catalina.sh как CATALINA_OPTS = -Xms512m -Xmx512m

Откройте файл tomcat-dir/bin/catalina.sh и добавьте следующую строку в любом месте -

CATALINA_OPTS="$CATALINA_OPTS -Xms1024m -Xmx3024m"

и перезагрузите tomcat