我正在寻找我的应用程序中的内存泄漏,我正在使用的分析器告诉我寻找这些类型的引用,但我不知道我在寻找什么。有人可以解释一下吗?
谢谢,
埃利奥特
答案 0 :(得分:7)
您可以对OUTER类进行合成反向引用,但不能对内部类实例进行合成反向引用。
e.g。
class Outer {
class Inner {
}
static class Nested {
}
}
在此示例中,Inner具有对Outer类的引用。嵌套没有。如果外部很大,这可能意味着你可以抓住你不需要的物体。
简而言之,如果可以,请制作内部课程static
。
答案 1 :(得分:3)
我认为没有合成引用到这样的东西。我认为探查器正在讨论从内部类到其封闭类的引用。当你有这样的代码时会创建这些代码:
class Outer {
class Inner {
}
}
在上面的代码中,Inner
的每个实例都有一个与之关联的Outer
实例。通过Inner
隐藏的合成成员字段维护关联,该字段包含对Outer
的引用。
如果代码是这样的变化:
class Outer {
static class Inner {
}
}
没有这样的合成参考。