我有一个广泛使用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
合理的大小?