我正在使用Groovy 1.7.6,我们有一个使用基本mixin的类(为此目的简化):
class MixinClass {
def self
def init(me){
this.self = me
}
}
我将这个mixin添加到另一个类(也简化),如下所示:
@Mixin(MixinClass)
class FunctionEntry {
def FunctionEntry(){
init(this)
}
..
以上基本上只是将对FunctionEntry类实例的引用传递给@mixin以供参考(尽管这可能是任何数据)
如果我现在运行测试,并且循环数千次调用new FunctionEntry()
我最终会收到Heap OOM错误(注意,循环实际上只是实例化对象,它不会将它存储在任何地方)。 / p>
调试堆之后我发现问题是MixinInMetaClass
- 我的结论是,即使我已经丢弃了对象实例,MixinInMetaClass也会保留数据而不会被收集。
有没有人遇到过这个问题?这是一个已知的Groovy 1.7.6问题吗?我的印象是Mixins可以保持状态,但是这个证据似乎表明每当我创建一个对象时,MixinInMetaClass就会对对象数据进行操作。