2014-07-24 10 views
9

Czasami, gdy ładuję widok tabeli, a celowo nie wykonuję żadnej czynności poza wyświetleniem widoku tabeli, poczekam kilka sekund, a następnie wzrośnie użycie mojego procesora. Jak mogę znaleźć przyczynę?Profil procesora iOS: Dlaczego ten wątek może wysysać 99,9% procesora?

enter image description here

+0

Przypuszczam, że jest w pętli "nieskończonej". W tym przypadku jest prawdopodobne, ponieważ pamięć masowa została sfałszowana, chociaż możliwe, że w jakiś sposób opisałeś strukturę danych kołowych, która jest teraz nawigowana. –

+0

Myślę, że potrzebujemy więcej szczegółów (wersja na iOS, a więc czwarta). I to prawdopodobnie i nieskończona pętla, jak powiedział @HotLicks. – Idris

+0

Odwróć drzewo wywołań i spróbuj znaleźć szkodliwą metodę/funkcję. Brzmi jak problem z UIKit/rysowaniem. – duci9y

Odpowiedz

15

Dlaczego może to być wątek ssanie aż 99,9% CPU?

Nie wiem. Ale oto kilka myśli:

  1. Odpowiedzialna biblioteka to UIKit. Wygląda więc na to, że jakiś kod interfejsu użytkownika jest uszkodzony.
  2. Funkcja o nazwie FreeContextStack działa przez długi czas.
  3. pthread_once i pthread_getspecific zajmują znaczną ilość czasu. Te funkcje są szybkie, więc często muszą być uruchamiane bardzo.
  4. Są częścią GetContextStack i PopContext

Wydaje się, że w kodzie nie jest jakiś „kontekst” stos pchanych, ale nie pojawiło. Poszukuję wystąpień UIGraphicsPushContext lub UIGraphicsBeginImageContext bez ich zamykających odpowiedników.

Ale mogę być całkowicie wyłączony i te funkcje nie są częścią kodu kontekstowego grafiki.

+1

Np. Może być tak, że kontekst A jest dzieckiem kontekstu B, który jest dzieckiem kontekstu A ... –

+0

Dokładnie! Brakowało 'UIGraphicsEndImageContext()' i 'CGImageRelease (imageRef)'. –

+0

Widziałem to samo. Miał ten sam problem. Dziękuję internetowi smarty! – voidref

1

Jest to możliwe nie jesteś kończąc swój UIGraphicsBeginImageContext

Rozwiązałem to samo dodając UIGraphicsEndImageContext po użyciu.

+0

(Rudi, pojawiłeś się w kolejce postów o niskiej jakości, ponieważ twoja odpowiedź wyglądała jak "mam ten sam problem", więc trochę zmieniłem frazę - mam nadzieję, że będzie dobrze z tobą) –

Powiązane problemy