Android'de (Java) LeakCanary olarak adlandırılan bellek sızıntısı algılaması için bir kütüphaneye rastladım, ancak belleği kaçıran yeri anlayamıyorum. Herhangi biri, örneklerinde gösterilen kodun nasıl ve neden bir bellek sızıntısı olduğunu açıklayabilir.Bu neden bir bellek sızdırıyor
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;
ve daha sonra seyretmek (yukarıdaki kod ilişkilendirmek nasıl bilmiyorum) aşağıdaki gibi gösterilen bir sızıntı verir sızıntı değişken schrodingerCat
.
* GC ROOT static Docker.container
* references Box.hiddenCat
* leaks Cat instance
Sızıntının açıklamasıyla ilgili herhangi bir yardım ve saptamanın bununla ilgili olarak nasıl yardımcı olabileceği çok yardımcı olabilir. Ayrıca yeni başlayanlar için bazı iyi makaleler güzel olurdu.
Teşekkürler!
Bu büyük açıklama LeakCanary'nin wiki'sine eklenmelidir :) – tieorange