Существует много вопросов, которые спрашивают это или подобный вопрос.
Они все дают команду, которая должна быть выполнена, что я не понимаю, то, где делают я пишу эту команду. Я хочу постоянно увеличить пространство "кучи" для своих приложений кота.
Я считал эту страницу 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)
Ваше изменение вполне может работать. Вашему приложению требуется много памяти - трассировка стека показывает некоторые функции, связанные с изображениями.
Я предполагаю, что ошибка возникает либо сразу, с большим файлом, либо позже, после нескольких запросов.
Если ошибка возникает сразу, вы можете еще больше увеличить объем памяти или выяснить, почему так много памяти требуется для одного файла.
Если ошибка возникает после нескольких запросов, возможно, произошла утечка памяти, когда объекты не удаляются сборщиком мусора. Использование такого инструмента, как JProfiler , может помочь вам отслеживать, сколько памяти используется вашей виртуальной машиной, и может помочь вам увидеть, что использует эту память и почему объекты не удаляются сборщиком мусора. .
Существует механизм, позволяющий делать это без изменения каких-либо файлов в дистрибутиве. Вы можете создать отдельный файл % CATALINA_HOME% \ bin \ setenv.bat
или $ CATALINA_HOME / bin / setenv.sh
и поместить туда свои переменные среды. Кроме того, настройки памяти применяются к JVM, а не к Tomcat, поэтому я бы вместо этого установил переменную JAVA_OPTS
:
установил JAVA_OPTS = -Xmx512m
Прежде всего, вы не можете изменить настройки памяти только для приложения tomcat, а скорее для всех tomcat пример.
Если вы запускаете tomcat с консоли (используя startup.bat), вам нужно отредактировать catalina.bat и поэкспериментировать с CATALINA_OPTS. Например:
set CATALINA_OPTS=-Xms512m -Xmx512m
При перезапуске tomcat будут применены новые настройки.
Если вы все еще получаете OutOfMemoryError, вам необходимо знать, сколько памяти требуется вашему приложению в данный конкретный момент (nom.tam.util.ArrayFuncs ...). Вам придется либо оптимизировать приложение, либо просто увеличить объем памяти, предоставленной tomcat.