Я столкнулся с библиотекой для обнаружения утечки памяти в 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
Любая помощь с объяснением утечки и тем, как обнаружение относится к ней, было бы очень полезно. Также неплохие статьи для начинающих.
Спасибо!