У меня есть устаревшая система, в которой широко используется Groovy
версии 1.0, и в настоящее время я не могу обновить Groovy
до обновленной версии. Время от времени я получаю PermGen
ошибку из-за того, что все Groovy
классы/скрипты хранятся в памяти, даже если их больше никто не использует.
Я пытаюсь выяснить, как правильно выгружать эти классы после того, как я закончил их использовать.
Я использую следующий код для создания объекта Script:
GroovyShell shell=new GroovyShell();
Script script = shell.parse("ANY_TEXT");
.....
И я пытаюсь использовать следующий код для выгрузки сгенерированного класса:
MetaClassRegistry metaClassRegistry = MetaClassRegistry.getIntance(0);
metaClassRegistry.removeMetaClass(script.getMetaClass().getClass());
metaClassRegistry.removeMetaClass(script.getClass());
metaClassRegistry.removeMetaClass(script.getBinding().getClass());
script.setBinding(null);
script.setMetaClass(null);
script = null;
К сожалению, это не работает, потому что я продолжаю получать ошибку PermGen
. Как я могу выгрузить Groovy
классов и сохранить разумный размер PermGen
?