CPU-Aktivität mit CPU Profiler prüfen

Die Optimierung der CPU-Nutzung Ihrer App bietet viele Vorteile, z. B. eine schnellere und reibungslosere Nutzererfahrung und schont die Akkulaufzeit des Geräts.

Mit dem CPU-Profiler können Sie die CPU-Nutzung und die Thread-Aktivität Ihrer Anwendung während der Interaktion mit Ihrer Anwendung in Echtzeit prüfen. Außerdem haben Sie die Möglichkeit, die Details in aufgezeichneten Methoden-Traces, Funktions-Traces und System-Traces zu überprüfen.

Die detaillierten Informationen, die der CPU-Profiler aufzeichnet und anzeigt, werden von der ausgewählten Aufzeichnungskonfiguration bestimmt:

  • System-Trace:Erfasst detailgenaue Details, mit denen Sie prüfen können, wie Ihre App mit Systemressourcen interagiert.
  • Methoden- und Funktions-Traces:Für jeden Thread in Ihrem Anwendungsprozess können Sie herausfinden, welche Methoden (Java) oder Funktionen (C/C++) über einen bestimmten Zeitraum ausgeführt werden und welche CPU-Ressourcen jede Methode oder Funktion während ihrer Ausführung verbraucht. Sie können auch Methoden- und Funktions-Traces verwenden, um Aufrufer und Aufgerufene zu identifizieren. Ein Aufrufer ist eine Methode oder Funktion, die eine andere Methode oder Funktion aufruft, und der Aufgerufene wird durch eine andere Methode oder Funktion aufgerufen. Anhand dieser Informationen können Sie ermitteln, welche Methoden oder Funktionen dafür verantwortlich sind, bestimmte ressourcenintensive Aufgaben zu oft aufzurufen, und den Code Ihrer Anwendung optimieren, um unnötige Arbeit zu vermeiden.

    Beim Aufzeichnen von Methoden-Traces können Sie zwischen einer gesampelten und einer instrumentierten Aufzeichnung wählen. Beim Aufzeichnen von Funktions-Traces können Sie nur eine Stichprobenaufzeichnung verwenden.

Weitere Informationen zur Verwendung und Auswahl der einzelnen Trace-Optionen finden Sie unter Aufzeichnungskonfiguration auswählen.

CPU-Profiler – Übersicht

So öffnen Sie den CPU-Profiler:

  1. Wählen Sie Ansicht > Toolfenster > Profiler aus oder klicken Sie in der Symbolleiste auf Profil .

    Wenn Sie im Dialogfeld Bereitstellungsziel auswählen dazu aufgefordert werden, wählen Sie das Gerät aus, auf dem Ihre Anwendung für die Profilerstellung bereitgestellt werden soll. Wenn Sie ein Gerät über USB verbunden haben, es aber nicht in der Liste sehen, prüfen Sie, ob das USB-Debugging aktiviert ist.

  2. Klicken Sie auf eine beliebige Stelle auf der CPU-Zeitachse, um den CPU-Profiler zu öffnen.

Wenn Sie den CPU-Profiler öffnen, werden sofort die CPU-Nutzung und die Thread-Aktivität Ihrer Anwendung angezeigt. Es sollte ein ähnliches Bild wie in Abbildung 1 angezeigt werden.

Abbildung 1: Zeitachsen im CPU-Profiler

Wie in Abbildung 1 dargestellt, umfasst die Standardansicht für den CPU-Profiler die folgenden Zeitpläne:

  1. Ereigniszeitachse:Zeigt die Aktivitäten in Ihrer App an, während sie verschiedene Status in ihrem Lebenszyklus durchlaufen. Sie zeigt Nutzerinteraktionen mit dem Gerät an, einschließlich Bildschirmrotationen. Informationen zum Aktivieren der Ereigniszeitachse auf Geräten mit Android 7.1 (API-Level 25) und niedriger finden Sie unter Erweiterte Profilerstellung aktivieren.
  2. CPU-Zeitachse: Zeigt die CPU-Nutzung in Echtzeit Ihrer Anwendung als Prozentsatz der insgesamt verfügbaren CPU-Zeit und die Gesamtzahl der von Ihrer Anwendung verwendeten Threads an. Die Zeitachse zeigt auch die CPU-Nutzung anderer Prozesse wie Systemprozesse oder anderer Apps, damit Sie sie mit der Nutzung Ihrer App vergleichen können. Sie können die bisherigen CPU-Nutzungsdaten einsehen, indem Sie die Maus entlang der horizontalen Achse der Zeitleiste bewegen.
  3. Zeitachse der Thread-Aktivität:Listet jeden Thread auf, der zu Ihrem Anwendungsprozess gehört, und zeigt seine Aktivität entlang einer Zeitachse mithilfe der unten aufgeführten Farben an. Nachdem Sie ein Trace aufgezeichnet haben, können Sie einen Thread auf dieser Zeitachse auswählen, um die zugehörigen Daten im Trace-Bereich zu untersuchen.
    • Grün:Der Thread ist aktiv oder kann die CPU verwenden. Er befindet sich also im Status „Aktiv“ oder „Ausführbar“.
    • Gelb: Der Thread ist aktiv, wartet aber auf einen E/A-Vorgang (z. B. Laufwerks- oder Netzwerk-E/A), bevor er seine Arbeit abschließen kann.
    • Grau:Der Thread befindet sich im Ruhemodus und verbraucht keine CPU-Zeit. Dies kann vorkommen, wenn der Thread Zugriff auf eine Ressource benötigt, die noch nicht verfügbar ist. Entweder wechselt der Thread in den freiwilligen Ruhemodus oder der Kernel setzt ihn in den Ruhemodus, bis die erforderliche Ressource verfügbar ist.

    Der CPU-Profiler meldet auch die CPU-Nutzung von Threads, die Android Studio und die Android-Plattform Ihrem Anwendungsprozess hinzufügen, z. B. JDWP, Profile Saver, Studio:VMStats, Studio:Perfa und Studio:Heartbeat. Die genauen Namen, die in der Zeitachse für Thread-Aktivitäten angezeigt werden, können jedoch variieren. Android Studio meldet diese Daten, damit du erkennen kannst, ob Thread-Aktivität und CPU-Nutzung tatsächlich durch den Code deiner App verursacht werden.