Let's suppose I have such code:
public class OuterClass{
InnerClass myInnerClass = new InnerClass();
public class InnerClass{
}
}
// somewhere I have created an OuterClass instance:
OuterClass outerClass = new OuterClass();
// do something
// ...
outerClass = null;
The question: is it enough to set only the outerClass to null
to avoid the memory leak? InnerClass
has a reference to OuterClass
, and OuterClass
has a reference to InnerClass
. Thus, as both of these objects have references to them, they cannot be garbage collected!