Przewodnik — korzystanie z narzędzia Instrumentów firmy Apple
W tym artykule opisano, jak używać narzędzia Instruments firmy Apple do diagnozowania problemów z pamięcią w aplikacji systemu iOS utworzonej za pomocą platformy Xamarin. Demonstruje on sposób uruchamiania instrumentów, tworzenia migawek stert i analizowania wzrostu pamięci. Pokazano również, jak używać instrumentów do wyświetlania i ustalania dokładnych wierszy kodu, które powodują problem z pamięcią.
Na tej stronie pokazano, jak używać narzędzia Narzędzia instrumentów Xcode do diagnozowania problemu z pamięcią w aplikacji systemu iOS.
Diagnozowanie problemów z pamięcią
W Visual Studio dla komputerów Mac uruchom narzędzie Instruments z poziomu elementu menu Narzędzia > Uruchom instrumenty.
Przekaż aplikację do urządzenia, wybierając element menu Uruchom > przekazywanie do urządzenia .
Wybierz szablon Alokacje (pomarańczowa ikona z białym polem)
Wybierz aplikację Pokaz pamięci w obszarze Wybierz szablon profilowania dla: listę w górnej części okna. Kliknij najpierw urządzenie z systemem iOS, aby rozwinąć menu z wyświetlonymi zainstalowanymi aplikacjami.
Naciśnij przycisk Wybierz (w prawym dolnym rogu okna), aby uruchomić instrumenty. Szablon ThiJs wyświetli dwa elementy w górnym okienku: Alokacje i Śledzenie maszyn wirtualnych.
Naciśnij przycisk Nagraj (czerwony okrąg w lewym górnym rogu) w obszarze Instrumenty, które uruchomi aplikację.
Wybierz wiersz Tracker maszyny wirtualnej w górnym okienku (teraz, gdy aplikacja jest uruchomiona, będzie zawierać dwie sekcje: Brudny i Rozmiar rezydentny). W okienku Inspector (Inspektor) wybierz opcję Pokaż wyświetlanie Ustawienia (ikona koła zębatego), a następnie zaznacz pole wyboru Automatyczne tworzenie migawek widoczne w prawym dolnym rogu tego zrzutu ekranu:
Wybierz wiersz Alokacje w górnym okienku (teraz, gdy aplikacja jest uruchomiona, zostanie wyświetlona wartość Wszystkie sterty i anonimowa maszyna wirtualna)
W okienku Inspector (Inspektor) wybierz opcję Pokaż wyświetlanie Ustawienia (ikona koła zębatego), a następnie kliknij przycisk Mark Generation (Generowanie znaku mark), aby ustanowić punkt odniesienia. Na osi czasu w górnej części okna pojawi się mała czerwona flaga
Przewiń aplikację, a następnie ponownie wybierz pozycję Mark Generation (Powtórz kilka razy)
Kliknij przycisk Zatrzymaj.
Rozwiń węzeł Generacja z największym wzrostem i posortuj według wzrostu (malejąco).
Zmień okienko Inspector (Inspektor) na Pokaż rozszerzone szczegóły (E), które pokazuje ślad stosu.
Zwróć uwagę, że <węzeł inny niż obiekt> pokazuje nadmierny wzrost pamięci. Kliknij strzałkę obok tego węzła, aby wyświetlić więcej szczegółów — kliknij prawym przyciskiem myszy ślad stosu, aby dodać lokalizację źródłową do okienka:
Sortuj według rozmiaru i wyświetl widok szczegółów rozszerzonych:
Kliknij żądany wpis w stosie wywołań, aby wyświetlić powiązany kod:
W takim przypadku nowy obraz jest tworzony i przechowywany w kolekcji dla każdej komórki, ani istniejące komórki widoku kolekcji są ponownie używane.
Rozwiązywanie problemów z pamięcią
Można rozwiązać te problemy i ponownie uruchomić aplikację za pomocą instrumentów.
Deklarując pojedyncze wystąpienie na poziomie klasy, obraz można ponownie użyć, a obiekt komórki można użyć ponownie z istniejącej puli zamiast tworzyć za każdym razem, jak pokazano poniżej:
public override UICollectionViewCell GetCell (UICollectionView collectionView, NSIndexPath indexPath)
{
// Dequeue a cell from the reuse pool
var imageCell = (ImageCell)collectionView.DequeueReusableCell (cellId, indexPath);
// Reuse the image declared at the class level
imageCell.ImageView.Image = image;
return imageCell;
}
Teraz, gdy aplikacja jest uruchamiana, użycie pamięci jest znacznie zmniejszone — wzrost między generacjami jest teraz mierzony w kib (kilobajtach), a nie w miB (megabajtach), tak jak przed naprawieniem kodu:
Artykuł Xamarin.iOS Garbage Collection (Odzyskiwanie pamięci platformy Xamarin.iOS) jest przydatnym odwołaniem do rozwiązywania problemów z pamięcią na platformie Xamarin.iOS.
Podsumowanie
W tym artykule pokazano, jak używać instrumentów do diagnozowania problemów z pamięcią. Opisano w nim sposób uruchamiania instrumentów z poziomu Visual Studio dla komputerów Mac, ładowania szablonu alokacji pamięci i kroków użycia migawek w celu określenia problemów z pamięcią. Na koniec aplikacja została ponownie zbadana, aby sprawdzić, czy problem został rozwiązany.