2014-07-24 6 views
9

Manchmal, wenn ich eine Tabellenansicht lade und ich keine Aktivität absichtlich ausführe, außer dass die Tabellenansicht angezeigt wird, warte ich ein paar Sekunden und dann nimmt meine CPU-Auslastung zu. Wie kann ich die Ursache finden?iOS CPU-Profil: Warum könnte dieser Thread 99,9% CPU-Auslastung beanspruchen?

enter image description here

+0

Ich würde vermuten, dass es in einer "unendlichen" Schleife ist. In diesem Fall wahrscheinlich, weil der Speicher verdorben ist, obwohl Sie möglicherweise eine kreisförmige Datenstruktur beschrieben haben, die gerade navigiert wird. –

+0

Ich denke, wir brauchen mehr Details (iOS-Version und so viert). Und es ist wahrscheinlich und Endlosschleife wie @ HotLicks sagte. – Idris

+0

Invertieren Sie den Anrufbaum und versuchen Sie, die problematische Methode/Funktion zu finden. Klingt wie ein UIKit/Zeichnung Problem. – duci9y

Antwort

15

Warum könnte dieser Thread 99,9% CPU werden aufsaugt?

Ich weiß es nicht. Aber hier sind ein paar Gedanken:

  1. Die verantwortliche Bibliothek ist UIKit. Es scheint also, dass ein Benutzerschnittstellencode fehlerhaft ist.
  2. Eine Funktion namens FreeContextStack läuft für eine lange Zeit.
  3. pthread_once und pthread_getspecific nehmen Sie eine beträchtliche Menge an Zeit. Diese Funktionen sind schnell, so dass sie oft sehr ausführen müssen.
  4. Sie sind Teil GetContextStack und PopContext

Es scheint, dass es in Ihrem Code eine Art von „Kontext“ Stapel geschoben, aber nicht aufgetaucht. Ich würde nach Vorkommen von UIGraphicsPushContext oder UIGraphicsBeginImageContext ohne ihre schließenden Gegenstücke suchen.

Aber ich könnte komplett ausgeschaltet sein und diese Funktionen sind nicht Teil des Grafik Kontext-Code.

+1

ZB könnte Kontext A ein Kind von Kontext B sein, der ein Kind von Kontext A ist. –

+0

Genau! Ich vermisste 'UIGraphicsEndImageContext()' und 'CGImageRelease (imageRef)'. –

+0

Ich sah das gleiche. Hatte das gleiche Problem. Danke Internet Smarty Mann! – voidref

1

Es ist möglich, Sie endet nicht Ihre UIGraphicsBeginImageContext

löste ich das gleiche von UIGraphicsEndImageContext nach Gebrauch Zugabe.

+0

(Rudi, du bist in der Post-Queue mit niedriger Qualität aufgetaucht, weil deine Antwort so aussah wie "Ich habe das gleiche Problem"; also änderte ich die Phrasierung etwas - hoffe es ist ok mit dir) –