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

Существует много вопросов, которые спрашивают это или подобный вопрос.

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

Я считал эту страницу 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, нет "" вокруг значения)
экспортируйте 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 (Массив java:90) nom.tam.util. ArrayFuncs.newInstance(ArrayFuncs.java:1028) nom.tam.fits. ImageData.read(ImageData.java:259) nom.tam.fits. Fits.readHDU (Соответствия java:573) контроллер. Контроллер UploadServlet.retreiveFITSFileFields(UploadServlet.java:206). ScanServerFiles.doPost(ScanServerFiles.java:39) javax.servlet.http. HttpServlet.service(HttpServlet.java:637) javax.servlet.http. HttpServlet.service(HttpServlet.java:717)

25
задан Narayan 27 April 2010 в 04:52
поделиться

3 ответа

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

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

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

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

8
ответ дан 28 November 2019 в 20:40
поделиться

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

установил JAVA_OPTS = -Xmx512m

26
ответ дан 28 November 2019 в 20:40
поделиться

Прежде всего, вы не можете изменить настройки памяти только для приложения tomcat, а скорее для всех tomcat пример.

Если вы запускаете tomcat с консоли (используя startup.bat), вам нужно отредактировать catalina.bat и поэкспериментировать с CATALINA_OPTS. Например:

set CATALINA_OPTS=-Xms512m -Xmx512m

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

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

9
ответ дан 28 November 2019 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: