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?
Antwort
Warum könnte dieser Thread 99,9% CPU werden aufsaugt?
Ich weiß es nicht. Aber hier sind ein paar Gedanken:
- Die verantwortliche Bibliothek ist
UIKit
. Es scheint also, dass ein Benutzerschnittstellencode fehlerhaft ist. - Eine Funktion namens
FreeContextStack
läuft für eine lange Zeit. pthread_once
undpthread_getspecific
nehmen Sie eine beträchtliche Menge an Zeit. Diese Funktionen sind schnell, so dass sie oft sehr ausführen müssen.- Sie sind Teil
GetContextStack
undPopContext
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.
ZB könnte Kontext A ein Kind von Kontext B sein, der ein Kind von Kontext A ist. –
Genau! Ich vermisste 'UIGraphicsEndImageContext()' und 'CGImageRelease (imageRef)'. –
Ich sah das gleiche. Hatte das gleiche Problem. Danke Internet Smarty Mann! – voidref
Es ist möglich, Sie endet nicht Ihre UIGraphicsBeginImageContext
löste ich das gleiche von UIGraphicsEndImageContext
nach Gebrauch Zugabe.
(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) –
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. –
Ich denke, wir brauchen mehr Details (iOS-Version und so viert). Und es ist wahrscheinlich und Endlosschleife wie @ HotLicks sagte. – Idris
Invertieren Sie den Anrufbaum und versuchen Sie, die problematische Methode/Funktion zu finden. Klingt wie ein UIKit/Zeichnung Problem. – duci9y