Как увеличить размер кучи для сервера jBoss
В моем проекте есть сценарий загрузки файлов. Когда я пытаюсь загрузить большие файлы, это дает мне ошибку OutOfMemory. Эта ошибка связана с размером кучи Java.
Как вы можете увеличить размер кучи в Java и какой файл мне нужно изменить для этого? Я использую сервер jboss 5.1 для запуска моего приложения.
Ответы
Ответ 1
Вы можете установить его как аргументы JVM обычным способом, например. -Xms1024m -Xmx2048m
для минимальной кучи 1 ГБ и максимальной кучи 2 ГБ. JBoss будет использовать переменную среды JAVA_OPTS
для включения дополнительных аргументов JVM, вы можете указать ее в файле /bin/run.conf.bat
:
set "JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx2048m"
Однако это более обходное решение, чем реальное решение. Если несколько пользователей одновременно загружают большие файлы, вы столкнетесь с одной и той же проблемой рано или поздно. Вам нужно будет постоянно увеличивать память. Вам лучше настроить файловый анализатор загрузки файлов, чтобы сохранить загруженный файл на временном диске, а не полностью в памяти. Пока неясно, какой парсер вы используете, подходящий ответ не может быть дан. Однако чаще всего Apache Commons FileUpload используется под обложками, тогда вы должны прочитать документацию с "пороговым размером" в качестве ключевого слова, чтобы настроить ограничение памяти для загруженных файлов. Когда размер файла превышает пороговое значение, он будет записан на диск.
Ответ 2
В wildfly 8 и более поздних версиях перейдите на /bin/standalone.conf
и разместите там JAVA_OPTS, со всем, что вам нужно.
Ответ 3
Отредактируйте следующую запись в файле run.conf. Но если у вас несколько JVM, запущенных на одном JBoss, вы можете запустить его с помощью аргумента командной строки -Xms2g -Xmx4g (или любых ваших предпочтительных параметров начальной/максимальной памяти.
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true
Ответ 4
Используйте параметры командной строки -Xms и -Xmx при запуске java:
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
Для получения дополнительной справки введите java -X
в командной строке.
Ответ 5
Посмотрите в папку JBoss bin для файла run.bat(run.sh в Unix)
найдите строку
set JAVA_OPTS
(или просто JAVA_OPTS в Unix) в конце этой строки добавьте -Xmx512m. Измените номер на объем памяти, который вы хотите выделить JBoss.
Если вы используете пользовательский script, чтобы запустить свой jboss-экземпляр, вы также можете добавить опцию JAVA_OPTS.
Ответ 6
Я упоминал об изменениях конфигурации, необходимых для увеличения размера кучи в Windows или Linux.
Linux:
bin/standalone.conf
Проверьте следующую строку,
JAVA_OPTS
и измените его в соответствии с вашими размерами кучи
-Xms1303m: initial heap size in megabytes
-Xmx1303m: maximum heap size in megabytes
JAVA_OPTS="-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M"
Windows:
bin/standalone.conf.bat
JAVA_OPTS="-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M"
Теперь перезапустите сервер, и он будет работать без каких-либо ошибок размера кучи.
Для получения дополнительной информации вы можете обратиться по этой ссылке ниже.
https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/5/html/getting_started_guide/adjust_memory_settings
Ответ 7
В моем случае для jboss 6.3
мне пришлось изменить JAVA_OPTS
в файле jboss-eap-6.3\bin\standalone.conf.bat
и установить следующие значения -Xmx8g -Xms8g -Xmn3080m
, чтобы jvm занимал 8 ГБ пространства.
Ответ 8
Что изменить?
set "JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx2048m"
Где поменять? (Обычно)
bin/standalone.conf(Linux) standalone.conf.bat(Windows)
Что если вы используете собственный скрипт, который переопределяет существующие настройки? затем?
setJBosssEnvironment.cmd/.sh (вид имени файла будет там)
Больше информации уже предоставлено некоторыми членами нашего комитета!
BalusC.
Ответ 9
Добавьте следующую опцию в jboss в bin/standalone.conf.bat
set "JAVA_OPTS=-Xms1G -Xmx1G -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=1024m"