2010-10-26 12 views
5

Śledzę bardzo trudną sytuację wycieku pamięci (lub bardziej prawdopodobną utratę pamięci). I wykonaj następujące czynności:Jak interpretować wyniki z alokacji i VM Tracker w instrumentach?

1) rozpocząć mój wniosek
2) dostać się do punktu, w którym aplikacja pokaże wycieku
3) uruchomić instrumenty pomocą wyboru „przydziały”
4) przywiązują do mojego procesu i rozpocząć nagrywanie
5) ma początkową heapshot
6) podjęcia wstępny obraz z VM śledzenia
7) powtórzenia etapów, które powodują pamięć rosnąć
8) ma inny heapshot
9), innego migawkę z VM tracker

Jeśli zrobię te kroki, widzę rezultaty, które nie mają większego sensu. Mam nadzieję, że brakuje mi pewnych informacji na temat działania tych narzędzi. Na przykład wiem, że narzędzie "przecieki" nie śledzi WSZYSTKICH rodzajów przydziału pamięci (np. Aplikacje węglowe). Moja aplikacja to ogromna, starsza aplikacja, która może mieć dziwny kod przydziału w nieaktualnym podsystemie, którego nie znam. Powiedział, że to, co widzę:

  • w początkowej migawkę VM trackera kiedy patrzę na podsumowaniu, typ MALLOC_SMALL jest dość mała w przybliżeniu 72MB (rozmiar wirtualny)
  • w drugiej migawki, MALLOC_SMALL wykorzystanie wzrosła do 224MB (rozmiar ponownie wirtualny)
  • w drugim heapshot, mówi mnie heapgrowth jest 45MB

Więc jak można MALLOC_SMALL rosną od 72MB do 224MB, ale heapgrowth jest tylko 45MB? Czy instrumentowi alokacji brakuje czegoś, co VMTracker nagrywa?

Dalsze wsparcie, że brakuje mi czegoś w przydziale Allocations ... jeśli spojrzę na NOWYCH regiony wymienione pod MALLOC_SMALL (te, które nie były w pierwszej migawki, ale były na drugim miejscu), te adresy powinny odpowiadać strony, które zostały przydzielone i stanowią różnicę 72 MB -> 224 MB, prawda? A więc przypomniałem sobie zakres adresów dla tego regionu (np. 0x79000000-0x7b000000) i wracam do instrumentu Przydziałów i sortuję listę "Wszystkie obiekty" według adresu. Potem szukam adresów z tego zakresu. Jednak widzę tylko 4 alokacje, które uwzględniają tylko 4 KB ?! Gdzie są inne 32MB, które tracker VM zgłosił w tym regionie?

Każda pomoc byłaby doceniona ... Mam nadzieję, że jest to coś podstawowego o tym, jak działają te narzędzia, których po prostu nie rozumiem.

Odpowiedz

Powiązane problemy