Na tej stronie znajdziesz informacje o wyszukiwaniu i wywoływaniu wycieków pamięci, które są unikalne dla układów opartych na widokach. Podstawowe informacje o przechwytywaniu i analizowaniu zrzutów sterty znajdziesz w artykule Przechwytywanie zrzutu sterty.
Wyszukiwanie wycieków pamięci
Aby szybko odfiltrować klasy, które mogą być powiązane z wyciekami pamięci, otwórz menu klasy i wybierz Pokaż wycieki aktywności/fragmentów. Android Studio
wyświetla klasy, które według niego wskazują na wycieki pamięci w instancjach
Activity i
Fragment w Twojej aplikacji. Typy
danych, które wyświetla filtr, to:
- instancje
Activity, które zostały zniszczone, ale nadal są do nich odwołania; Fragmentinstancje, które nie mają prawidłowegoFragmentManager, ale nadal są do nich odwołania.
Pamiętaj, że w tych sytuacjach filtr może dawać fałszywe alarmy:
- Utworzono
Fragment, ale nie został jeszcze użyty. Fragmentjest buforowany, ale nie w ramach aFragmentTransaction.
Aby ręcznie wyszukać wycieki pamięci, przejrzyj listy klas i instancji, aby znaleźć obiekty o dużej rozmiarze zachowanym. Poszukaj wycieków pamięci spowodowanych przez:
- długotrwałe odwołania do
Activity,Context,View,Drawablei innych obiektów które mogą zawierać odwołanie do konteneraActivitylubContext; - niestatyczne klasy wewnętrzne, takie jak a
Runnable, które mogą zawierać instancjęActivity. - pamięci podręczne, które przechowują obiekty dłużej niż jest to konieczne.
Gdy znajdziesz potencjalne wycieki pamięci, użyj kart Pola i Odwołania w sekcji Szczegóły instancji , aby przejść do interesującej Cię instancji lub wiersza kodu źródłowego.
Wywoływanie wycieków pamięci na potrzeby testowania
Aby wywołać wycieki pamięci na potrzeby testowania w aplikacji, możesz to zrobić na jeden z tych sposobów:
- W różnych stanach aktywności obracaj urządzenie z orientacji pionowej do poziomej i z powrotem. Obracanie urządzenia może często powodować wyciek obiektu
Activity,ContextlubVieww aplikacji, ponieważ system ponownie tworzyActivity. Jeśli aplikacja zawiera odwołanie do jednego z tych obiektów w innym miejscu, system nie może go usunąć. - W różnych stanach aktywności przełączaj się między aplikacją a inną aplikacją. Na przykład przejdź do ekranu głównego, a potem wróć do aplikacji.