Ogromny bajt [] w mojej aplikacji po HPROF
Od czasu do czasu, szczególnie przy wdrażaniu nowych funkcji w mojej aplikacji, używam DDMS + HPROF do analizy pamięci i wykorzystania sterty. Ponieważ wydaje się, że aplikacja nie ma żadnych problemów z wydajnością ANR i wszystko działa płynnie, początkowo nie przejmowałem się tym - ale teraz, jak widzę, jest to w przybliżeniu zawsze ten sam rozmiar, zastanawiam się, co do cholery może to zrobić być.
Za każdym razem, gdy uruchamiam HPROF, sprawdzamPodejrzani o wyciek patka. Zawsze jest cośandroid.graphics.Bitmap
instancja, która zajmuje około 25% całej używanej sterty.
Chciałem dowiedzieć się trochę więcej o tym, więc otworzyłemdrzewo dominującei zobaczyłem to:
Zasadniczo jest ogromnybyte[]
instancja, która zachowuje dużo kupy, inigdy zostaje zwolniony. Wedługto, Skopiowałem wartość tegobyte[]
, wrzuciłem to do.data
plik, otwarty w Gimp, i jest wynik:
W zasadzie wygląda to tak„alpha (0)” część obrazu PNG. Biorąc pod uwagę następujące fakty:
Wszystkie moje pliki obrazów mają rozmiar <8KTylko niektóre z nich to PNG - pozostałe, które udało mi się przekonwertować na JPG, zrobiłemBez względu na to, czy dodam kolejne zdjęcia, rozmiar tegobyte[]
zawsze był taki sam od początku aplikacji (4 miesiące temu)Aby go zdebugować, próbowałem go usunąćkażdy plik obrazu zdrawable
idrawable-xxx
foldery i uruchom aplikację bez żadnych zasobów do rysowania ibyte[]
wciąż tam byłUsunąłem prawie wszystkie układy i pozwoliłem tylko na podstawową funkcjonalność i ten sam rezultatwDrzewo dominatora, klasa root toandroid.graphics.Bitmap
Każdy wie, co to jestbyte[]
a jeśli powinienem coś zrobić, aby to uwolnić?
Każda pomoc doceniona!