Rspec (jruby) исключение памяти
Я не обязательно ищу ответ на этот вопрос, я ищу рекомендации по диагностическим инструментам, которые помогли бы мне получить корень проблемы
У нас есть очень большой набор тестов в rspec, который при полном запуске исчерпывает память.
Когда мы получаем сообщение, оно говорит: "Javalang::OutofMemoryError \n permgen space"
Это не происходит для определенных тестов, но, похоже, это происходит примерно в одно и то же время при запуске набора тестов (очевидно, использование памяти накапливается без освобождения и в конечном итоге вызывает сбой)
Мы используем jruby с оракулом через ojdbc.
Кто-нибудь есть какие-либо предложения о том, что делать, чтобы отследить источник этой проблемы? Очевидно, что jmap был менее чем полезен (хотя мы не дошли до точки отладки ojdbc)
1 ответ
Благодарим Джоша Сильвермана и Стивена Каргера за этот ответ:
Повышение PermGen max решает проблему. Похоже, что удвоение максимального PermGen до 128 мегабайт может поддерживать набор тестов в 10 раз больше. Из моего тестирования похоже, что использование памяти процессом java начинает выравниваться около 690 МБ (500 кучи + 128 перигеев + 50 МБ неизвестно) с этим новым PermGen max. Вы можете увеличить выделение памяти PermGen, изменив свой JRUBY_OPTS, как показано выше.
# in your .bashrc or .bash-profile, or other environment control:
export JRUBY_OPTS="--1.9 -J-XX:MaxPermSize=128m"