Sdílet prostřednictvím


Návod – Použití nástroje Apple

Tento článek vás provede používáním nástroje Apple Instruments k diagnostice problémů s pamětí v aplikaci pro iOS vytvořenou pomocí Xamarinu. Ukazuje, jak spustit nástroje, pořizovat snímky haldy a analyzovat růst paměti. Ukazuje také, jak pomocí nástrojů zobrazit a určit přesné řádky kódu, které způsobují problém s pamětí.

Tato stránka ukazuje, jak pomocí nástroje Nástroje Xcode diagnostikovat problém s pamětí v aplikaci pro iOS.

Diagnostika problémů s pamětí

  1. V Visual Studio pro Mac spusťte nástroje z položky nabídky Nástroje > spustit nástroje.

  2. Nahrajte aplikaci do zařízení tak, že zvolíte položku nabídky Spustit > nahrání do zařízení .

  3. Zvolte šablonu Přidělení (oranžová ikona s bílým rámečkem)

    Volba šablony Přidělení

  4. Vyberte aplikaci Ukázka paměti v šabloně Zvolit profilaci pro: seznam v horní části okna. Kliknutím na zařízení s iOSem nejprve rozbalte nabídku, která zobrazuje nainstalované aplikace.

    Výběr aplikace Ukázka paměti

  5. Stisknutím tlačítka Zvolit (vpravo dole v okně) spusťte nástroje. Šablona ThiJs zobrazí v horním podokně dvě položky: Přidělení a sledování virtuálních počítačů.

  6. V nástrojích stiskněte tlačítko Záznam (červené kolečko v levém horním rohu), které spustí aplikaci.

  7. V horním podokně vyberte řádek Sledování virtuálních počítačů (teď, když je aplikace spuštěná, bude obsahovat dvě části: Dirty a Resident Size). V podokně inspektoru zvolte možnost Zobrazit Nastavení (ikona ozubeného kola) a zaškrtněte políčko Automatické vytváření snímků, které se zobrazí v pravém dolním rohu tohoto snímku obrazovky:

    Zvolte možnost Zobrazit zobrazení Nastavení ikonu ozubeného kola a zaškrtněte políčko Automatické vytváření snímků.

  8. V horním podokně vyberte řádek Přidělení (teď, když je aplikace spuštěná, zobrazí se všechny haldy a anonymní virtuální počítač).

  9. V podokně inspektoruzvolte možnost Zobrazit Nastavení zobrazení (ikona ozubeného kola) a kliknutím na tlačítko Označit generaci vytvořte směrný plán. Na časové ose v horní části okna se zobrazí malý červený příznak.

  10. Posuňte aplikaci a pak znovu vyberte Označit generaci (několikrát opakujte).

  11. Klikněte na tlačítko Zastavit .

  12. Rozbalte uzel Generování s největším růstem a seřaďte ho podle položky Growth (sestupně).

  13. Změňte podokno inspektoru na Zobrazení rozšířených podrobností ("E"), které zobrazuje trasování zásobníku.

  14. Všimněte si, že uzel bez objektu <> ukazuje nadměrný růst paměti. Kliknutím na šipku vedle tohoto uzlu zobrazíte další podrobnosti – kliknutím pravým tlačítkem myši do trasování zásobníku přidáte umístění zdroje do podokna:

    Přidání umístění zdroje do podokna

  15. Seřadit podle velikosti a zobrazit rozšířené zobrazení podrobností:

    Seřadit podle velikosti a zobrazit rozšířené zobrazení podrobností

  16. Kliknutím na požadovanou položku v zásobníku volání zobrazíte související kód:

    Zobrazení souvisejícího kódu

V tomto případě se vytvoří a uloží nová image do kolekce pro každou buňku, ani existující buňky zobrazení kolekce se znovu nepoužívají.

Řešení problémů s pamětí

Tyto problémy je možné vyřešit a aplikaci znovu spustit prostřednictvím nástroje.

Deklarováním jedné instance na úrovni třídy je možné image znovu použít a objekt buňky je možné znovu použít z existujícího fondu místo toho, aby se pokaždé vytvářel, jak je znázorněno níže:

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;
}

Když je aplikace spuštěná, využití paměti se výrazně sníží – růst mezi generacemi se teď měří v Kibu (kilobajtech), nikoli v MiB (megabajtech), jak tomu bylo před opravou kódu:

Zobrazení využití paměti aplikace

Článek Xamarin.iOS Uvolňování paměti je užitečným odkazem pro řešení problémů s pamětí v Xamarin.iOS.

Shrnutí

Tento článek ukazuje, jak pomocí nástrojů diagnostikovat problémy s pamětí. Popisuje, jak spustit nástroje z Visual Studio pro Mac, načíst šablonu přidělení paměti a krok použít snímky k určení problémů s pamětí. Nakonec se aplikace znovu prozkoumala a ověřila, že se problém opravil.