Ошибка "[junit] java.lang.OutOfMemoryError: пространство PermGen - PullRequest
0 голосов
/ 20 ноября 2019

Мы запускаем Junits на сервере Linux. Внезапно мы начали сталкиваться с проблемой постоянного пространства. Ниже приведены параметры, которые мы используем для установки пространства. Значение по умолчанию для максимального размера перми составляет 174063616

ANT_OPTS=-Xmx4098m
export ANT_OPTS

JAVA_OPTS=-Xmx16392m
export JAVA_OPTS

После получения проблемы с пространством для пермгена я изменил значение параметров, как указано ниже. Но все равно не повезло.

ANT_OPTS=-Xmx4098m
export ANT_OPTS

JAVA_OPTS=-Xmx32784m
export JAVA_OPTS

1 Ответ

0 голосов
/ 21 ноября 2019

Если у вас есть ошибки выделения памяти, связанные с пространством «permGen», это означает, что вы работаете с Java 7 или ниже. Так что, как замечание: если вы используете Java 8 или выше, вы больше не должны видеть эту ошибку, так как это пространство больше не существует само по себе и ограничено только доступной собственной памятью.

Опция JVM для управления пространством PermGen: XX:MaxPermSize. Таким образом, вы должны добавить в JVM при запуске модульных тестов этот аргумент командной строки: -XX:MaxPermSize=256m.

Переменная environement ANT_OPTS настроит JVM, используемую самим Ant. Вы должны использовать эту переменную environement, если модульные тесты не запускаются как разветвленные.

Если вы запускаете свои модульные тесты в JVM, разветвленной Ant, то вы должны указать Ant запустить задачу Junit с некоторыми дополнительными аргументами JVM. ,Параметр, который вам нужно использовать: jvmarg.

См. Официальную документацию Ant о задаче: https://ant.apache.org/manual/Tasks/junit.html

Итак, вот фрагмент XML для установки правильного свойства:

<junit fork="yes">
    <jvmarg value="-XX:MaxPermSize=256m" />
</junit>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...