Я запускаю несколько тестов, используя JMeter 3.1.Некоторые из этих тестов используют JSR223 Sampler, который использует скрипт Groovy для оценки значений и возврата результатов.
Эти тесты запускаются с клиента, использующего Java 8, обновление 112.
Когда я запускаю эти тестыобъем динамической памяти постепенно увеличивается, вплоть до того, что вызывает исключение «Недостаточно памяти» и дамп динамической памяти.
Я использовал Java VisualVM для проверки прогресса памяти и обнаружил, что загружаемые классы постоянно увеличиваютсядо 100 000 загруженных классов.
Итак, я запустил JMeter, используя -verbose: classes, и есть тысячи строк относительно загрузки классов "Script", таких как:
[Loaded Script1 from file: /groovy/script]
[Loaded Script2 from file: /groovy/script]
[Loaded Script3 from file: /groovy/script]
[...]
[Loaded Script2409 from file: /groovy/script]
И т. Д.
Есть ли способ избежать такого поведения?Я считаю, что JMeter создает новое определение класса для каждой проверки скрипта, и эти выражения никогда не выгружаются из памяти.
Все эти проверки выполняются с помощью:
evaluate(new File("...\script.groovy"))
Я сам не сделал файл script.groovy, но могу проверить его при необходимости.
Редактировать: я пробовал новый тест с пустым скриптом groovy, и загрузка классов точно такая же,так что это не имеет никакого отношения к содержанию скрипта.