2010-01-28 10 views
85

Używam narzędzia ObjectAlloc Instumenta, aby zrozumieć, co robi moja aplikacja (iPhone) i kiedy i gdzie to robi.Instruments ObjectAlloc: Objaśnienie żywych bajtów i ogólnych bajtów

Naprawdę chciałbym podstawowego wyjaśnienia tych statystykach:

  • żywo Bytes
  • Living

  • przejściowy

  • Ogólna Bytes

Kiedy próbuję aby określić, ile pamięci mój Aplikacja używa, czy mam przyjrzeć się bajtom na żywo lub ogólnym bajtom? Czy to zawiera wyciek pamięci? Czym są obiekty przejściowe?

Dzięki

+6

kolumny mają krótkie opisy po najechaniu na ich nagłówków. –

Odpowiedz

109

ObjectAlloc śledzi wszystkie alokacji pamięci i dealokacji upływem czasu program jest uruchomiony.

To, ile pamięci używa twoja aplikacja w momencie wybierania na osi czasu. Będzie to obejmować wyciek pamięci, ponieważ przeciekła pamięć nigdy nie zostanie zwolniona.

#Living to liczba przydziałów określonego rozmiaru/typu obiektu (i są one nadal przydzielane). Jest to bardzo przydatne przy poszukiwaniu przecieków.

Na przykład, jeśli wykonujesz powtarzające się działanie (np. Wchodząc poza kontroler widoku modalnego) i widzisz, że obiekt #Living obiektu rośnie o tę samą kwotę za każdym razem, prawdopodobnie wyciekasz te obiekty . Następnie możesz potwierdzić, odwiercając i widząc dokładną linię kodu, który przydziela obiekty, a nawet zobaczysz indeks czasu, który został utworzony.

Overall bytes zawiera pamięć, która została zwolniona. Przydatne jest śledzenie tej liczby w celu optymalizacji wydajności, ale nie wtedy, gdy próbujesz zobaczyć aktualny ślad pamięci lub szukać wycieków.

+3

Co chciałbyś zoptymalizować pod względem ogólnych bajtów? Próba utrzymania małej liczby oznacza lepszą wydajność? –

+4

Tak, zgadza się. Częstą przyczyną problemów z wydajnością jest przypadkowe uruchomienie tego samego kodu więcej niż jeden raz. Narzędzie alokacji może być dobrym sposobem na zauważenie. Na przykład, nawet jeśli dodatkowe obiekty nie wyciekają, możesz powiedzieć: "Dlaczego zrobiłem 3 tego obiektu? Tam powinien być tylko jeden!" –

+0

@KenAspeslagh - więc jestem nieco zdezorientowany ... Weźmy przykład. Widzę w alokacjach: nie więcej niż 200 KB na raz, ale prawie 200 MB w ogólnych bajtach. Czy to oznacza, że ​​moja aplikacja pobiera za dużo i otrzyma ostrzeżenie o zapamiętywaniu? lub dlatego, że Live to tylko 200KB, jestem dobry, aby przejść? –

18

Wyjaśnienie statystyk z dokumentacji Apple. Link to the document

enter image description here

enter image description here

+0

Czy możesz również usunąć łącze do tego dokumentu? – shoumikhin

+1

@shoumikhin Plz sprawdź odpowiedź edycji –