Zapisywanie zrzutu stosu (widoki)

Implementacja Jetpack Compose

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;
  • Fragment instancje, które nie mają prawidłowego FragmentManager, 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.
  • Fragment jest buforowany, ale nie w ramach a FragmentTransaction.

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, Drawable i innych obiektów które mogą zawierać odwołanie do kontenera Activity lub Context;
  • 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, Context lub View w aplikacji, ponieważ system ponownie tworzy Activity. 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.