【发布时间】:2016-01-24 07:51:55
【问题描述】:
我有一个广泛使用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 大小合理?
【问题讨论】:
-
如果您不尝试这样做,是否会出现此错误?
-
您是否尝试过将更新版本的 groovy 放入其中?只是看看它是否解决了问题?然后,您可以将其带给那些决定无法更新的人,以帮助您为理智辩护
-
只有在使用 Groovy 时才会出现该问题。
-
我无法更新我的 groovy 版本,因为它是旧系统
-
如果您无法修复其中的错误,为什么要问这个问题?任其溃烂
标签: groovy permgen groovyclassloader