Як збільшити пам'ять, виділену Java? java.lang.OutOfMemoryError: Куповий простір Java


5

У мене є сервер Ubuntu 12.04, що використовує зворотний проксі, так що tomcat працює поверх apache. І у мене є примірник злиття на цій машині та система квитків. Тож нічого особливого.

Пам'ять становить 8 Гб, що більш ніж достатньо для цього використання.

Час від часу і в останні кілька днів частіше трапляється моя сторінка злиття.

Журнал (злиття \ logs \ catalina.2014-05-06) показує це:

SEVERE: Socket accept failed
java.lang.OutOfMemoryError: Java heap space

То як я можу цього уникнути? Як я можу дати цьому процесу більше пам'яті.


1
Якщо я правильно встановив налаштування, установка злиття працює на tomcat. Можливість зміни пам’яті, доступної Java, як це зафіксовано, man java- «-Xmxn», де «n» слід замінити цифрою. Щоб встановити ліміт в 100 Мб для розподільника пам'яті Javas, ви встановите його на "-Xmx100m". Це повинно бути встановлено в параметрах кота - см stackoverflow.com/questions/7738794/add-jvm-options-in-tomcat
soulsource

Тобто це томатні колоди?
MickyInTheSky

так, він працює на tomcat, але за допомогою зворотного проксі. це звичайна установка, задокументована в посібнику з установки злиття. Як я бачу фактичну пам’ятку, доступну для Java? thx
Рядовий

Чи можете ви сказати мені, де я можу встановити параметри? Я не можу знайти правильне місце в catalina.sh, я помиляюся там?
Приват

Відповіді:


8

У своїй системі я відредагував файл

/etc/init.d/tomcat 

з цими рядами

HEAP="-Xms2048m -Xmx2048m" 
export JAVA_OPTS="$HEAP"

Після перезапуску tomcat у розділі стану можна побачити виділену пам'ять


5
14.04., Встановивши tomcat7 із сховищ, слід редагувати /etc/default/tomcat7.
Метт Південь

1
Для Ubuntu 15.04 та tomcat8, встановлених із сховищ, відредагуйте /etc/default/tomcat8.
Дерек Махар

3

Ви також можете це зробити у tomcat/bin/setenv.shфайлі та перезапустити tomcat:

export JAVA_OPTS="-Xms512m -Xmx1024m"

1

Причина помилки пов’язана з тим, як Java розподіляє пам'ять. Ваші програми можуть використовувати лише обмежений об'єм пам'яті. Цей ліміт визначається під час запуску програми.

Дозволений максимальний розмір встановлюється під час запуску JVM, вказавши параметри JVM, такі як -Xmx. Якщо ви чітко не встановите розміри, будуть використані типові налаштування для платформи.

Отже - помилка "java.lang.OutOfMemoryError: Пробіг купочки Java" буде спровокована, коли ви намагаєтеся додати більше даних у область простору купи в пам'яті, але розмір цих даних більший, ніж JVM може розміститися в купі Java простір.

Тож очевидний спосіб - збільшити (або додати, якщо він відсутній) максимально можливий розмір купи, визначений за допомогою параметра -Xmx. Але у багатьох випадках ви просто приховуєте симптоми замість того, щоб вирішити основну проблему. Щоб побачити повне пояснення java.lang.OutOfMemoryError: Помилка простору Java-купи, перегляньте сайт налаштування продуктивності Plumbr .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.