我在 Android (Java) 中遇到了一个名为LeakCanary的内存泄漏检测库,但无法理解它们泄漏内存的示例。任何人都可以解释他们示例中显示的代码如何以及为什么是内存泄漏。
class Cat {
}
class Box {
Cat hiddenCat;
}
class Docker {
static Box container;
}
// ...
Box box = new Box();
Cat schrodingerCat = new Cat();
box.hiddenCat = schrodingerCat;
Docker.container = box;
然后他们观察变量schrodingerCat
的泄漏,泄漏如下所示(我不知道如何与上面的代码相关联)。
* GC ROOT static Docker.container
* references Box.hiddenCat
* leaks Cat instance
任何有关泄漏解释以及检测如何与之相关的帮助都将非常有帮助。还有一些适合初学者的好文章会很好。
谢谢!