Lernprogramm: Profilermittlungsdaten analysieren
Ziele
Analysieren der durch Erstellung eines Java-Prozessprofils gewonnenen Daten unter Verwendung
der Sichten zur Profilermittlung und Protokollierung in der Perspektive 'Profilermittlung und Protokollierung':
- Identifizieren der zeitintensivsten Objekte und Methoden
- Identifizieren speicherintensiver Klassen
- Messen der gleichzeitigen Programmzugriffe
- Aufspüren von Speicherlecks
- Anzeigen der Ausführungen einer Methode als Zeitfunktion
- Übersicht über Ausführungsverhalten als Zeitfunktion gewinnen
- Identifizieren aktiver Threads
- Feststellen, wann Threads aktiv sind
- Identifizieren häufig aufgerufener Methoden
- Untersuchen der Garbage-Collection
- Identifizieren verschiedener Phasen der Programmausführung
- Untersuchen verschiedener Methodenaufrufe
- Untersuchen eines Methodenaufrufers
Erforderliche Zeit
Eine Stunde
Vorbereitende Schritte
Bevor Sie mit diesem Lernprogramm beginnen, müssen Sie:
- Die Eclipse-Plattform inklusive der Test and Performance Tools Platform (TPTP) implementieren.
- Halten Sie die Beispieldaten für die Profilermittlung (hcframe.jar) zum Import bereit. Die Datei sollte im folgenden Verzeichnis gespeichert werden:
TPTP_installationsverzeichnis\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0
Beschreibung
In diesem Lernprogramm werden Sie die verschiedenen Sichten zur Profilermittlung und Protokollierung zum Analysieren der Beispielklasse PerformanceExample.class
verwenden. In dem Beispiel wird ein Rahmen mit zwei Schaltflächen geöffnet.
Sie werden die folgenden Tasks durchführen:
- Öffnen der Perspektive 'Profilermittlung und Protokollierung' in der Workbench
- Erstellen eines Profils der Klasse PerformanceExample
- Analysieren der Profildaten
Verwenden Sie die Schalfläche 'Sichten aktualisieren'
, um die Sichten der Anwendung zu aktualisieren, während die Anwendung überwacht wird.
Klicken Sie im Menü Fenster auf Perspektive öffnen > Sonstige > Profilermittlung und Protokollierung.
Um eine Profilermittlung für die Klasse 'PerformanceExample' durchzuführen, gehen Sie wie folgt vor:
- Klicken Sie auf das Dropdown-Menü Profil
und wählen Sie Profil aus. Der Dialog 'Profil starten' wird geöffnet.
- Klicken Sie Externe Java-Anwendung doppelt an, um eine neue Konfiguration zu erstellen.
- Wechseln Sie zur Registerkarte Haupt.
- Geben Sie org.eclipse.hyades.test.collection.framework.PerformanceExample in das Feld Klassenname
ein.
- Klicken Sie JAR hinzufügen an, um die JAR hinzuzufügen, die diese Klasse enthält.
- Wählen Sie TPTP_installationsverzeichnis\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0\hcframe.jar aus.
- Klicken Sie Öffnen an. Die JAR wird hinzugefügt.
- Klicken Sie die Registerkarte Überwachung an. Auf dieser Registerkarte können Sie die Kriterien für die
Profilermittlung angeben.
- Erweitern Sie auf der Seite 'Überwachung' den Knoten Java-Profilermittlung, wählen Sie Speicherbasisanalyse aus und aktivieren Sie das nebenstehende Markierungsfeld. Hierdurch werden speicherbezogene Informationen der
Liste der Informationstypen hinzugefügt, die von der Anwendung erfasst werden sollen..
- Wählen Sie Ausführungszeitanalyse aus, und wählen Sie das nebenstehende Markierungsfeld aus.
Wenn
diese Option ausgewählt ist, können Sie die statistischen Sichten zum Analysieren zeitbezogener
Informationen verwenden. Sie müssen grafische Details zur Ausführung erfassen, wenn Sie
die Sichten 'Ausführungsablauf' und 'Methodenaufruf' verwenden wollen. Da Sie sich in diesem Beispiel mit allen Sichten zur Profilerstellung vertraut machen sollen,
also auch mit den Sichten 'Ausführungsablauf' und 'Methodenaufruf', klicken Sie bei der Auswahl von Ausführungszeitanalyse auf Optionen bearbeiten und
klicken Sie im Dialog 'Profilermittlungsoptionen bearbeiten' auf Grafikdetails für Ausführungsablauf anzeigen.
Wählen Sie außerdem das Markierungsfeld Durch Filtergruppe ausgeschlossene
Grenzwertklassen erfassen, und legen Sie die Tiefe für Grenzwertklasse auf
1 fest. Klicken Sie auf Fertig stellen.
- Die Filtergruppe für Profilermittlung ermöglicht Ihnen die Angabe einer Untergruppe für die Analyse. Dies ist
sinnvoll, wenn Sie Klassen oder Pakete herausfiltern wollen, die nicht analysiert werden sollen.
Wählen Sie den Datenkollektor Java-Profilermittlung aus, und klicken Sie auf Optionen bearbeiten. Der Dialog für Filtergruppen wird geöffnet.
Klicken Sie unter Inhalt der ausgewählten Filtergruppe die Option Hinzufügen an, um Klassen oder Pakete hinzuzufügen, für die Sie Daten erfassen wollen.
Der Dialog 'Filter hinzufügen' wird geöffnet.
- Um eine Profilermittlung für diese Klasse durchzuführen, geben Sie org.eclipse.hyades.test.collection.framework.* als Klasse ein.
- Geben Sie den Methodennamen als * an, um nur die zu diesem Beispiel gehörenden
Methoden aufzunehmen.
- Klicken Sie auf OK. Das Filterkriterium wird der Inhaltsliste hinzugefügt.
- Um andere vorhandene Klassen aus der Liste des Filterinhalts auszuschließen, klicken Sie Einschließen unter
der Spalte 'Regel' für die Klasse an, und ändern Sie die Angabe in Ausschließen.
- Klicken Sie auf Weiter, um zur Seite Grenzwerte zu gelangen. Diese
Seite steuert die erfasste Datenmenge, entweder auf Grundlage der vergangenen Zeit oder
auf Grundlage der Anzahl der Methodenaufrufe. Übernehmen Sie die
Standardwerte. Klicken Sie auf Fertig stellen, um die Seite zu schließen und
die Änderungen anzuwenden.
- Klicken Sie die Registerkarte Ziel an. 'ProfileProject' und 'DefaultMonitor' sind die Standardressourcen
für die Profilermittlung, die zum Speichern von Daten aus dieser Profilermittlungssitzung verwendet werden können.
- Klicken Sie auf Profil.
- Die erforderlichen Profildaten werden erstellt und der Agent erscheint zusammen mit dem Prozess in der Sicht 'Profilmonitor'.
- Aktivieren Sie die Anzeige von Überwachungen, indem Sie Verteiltes Layout auswählen, so wie in der folgenden Anzeigenerfassung dargestellt. Dadurch sehen Sie das Überwachungsprogramm, das Ihre Daten gruppiert, sowie
das System, auf dem Sie die Workbench ausführen.

Anzeigen des Ausführungsverhaltens in einem bestimmten Zeitraum
Sie können die Ausführung der Anwendung mit Hilfe der Sicht und Tabelle 'Ausführungsablauf' untersuchen.
Die Ausführung dieses Programms wird in dieser Sicht grafisch und im Tabellenformat dargestellt. In der Sicht 'Ausführungsablauf' wird auf der vertikalen Achse die Zeit angezeigt. Die Tabelle 'Ausführungsablauf' wird unter der Sicht 'Ausführungsablauf' geöffnet und führt sämtliche Threads und die durch die jeweiligen Threads aufgerufenen Methoden auf.
- Wählen Sie in der Sicht 'Profilermittlung - Überwachung' Ihre Überwachung aus, klicken Sie die rechte
Maustaste an und wählen Sie Öffnen mit > Ausführungsablauf an, um die Sicht 'Ausführungsablauf' zu öffnen. Die
Sicht 'Ausführungsablauf' wird geöffnet.
- Um eine bestimmte Methode zu untersuchen, klicken Sie die entsprechende Methode, um die Methode auswählen. Dadurch werden alle zugehörigen aufgerufenen Methoden gelb hervorgehoben. Die vertikale Länge des hervorgehobenen Bereichs
deutet auf die Basiszeit der Methode hin. Den genauen Wert der Basiszeit sehen Sie in der Statuszeile.

Wenn Sie Ihren Cursor über ein Objekt in der Sicht bewegen, werden in der Statusleiste am unteren Ende des Fensters detaillierte Informationen angezeigt.
- Verwenden Sie zum Aktivieren des Cursors das Tool Vergrößern
. Zeigen und klicken Sie dann
auf einen gewünschten Bereich, um ihn zu vergrößern.
Hinweis: Um die Sichten während der Überwachung der Anwendung zu aktualisieren, klicken Sie die
Schaltfläche Sichten aktualisieren
an.
Identifizieren aktiver Threads
In der Sicht 'Ausführungsablauf' sind jedem Thread bestimmte Aktivitätszeiträume zugeordnet,
in denen sich ein Überfluss an Methodenaufrufen erkennen lässt. In der symbolischen
Darstellung ist die erste aufgerufene Methode ein Streifen, und die von dieser Methode
anschließend aufgerufenen Methoden werden rechts daneben als Streifen dargestellt. Die Reihenfolge der Methodenaufrufe schreitet von links nach rechts fort; die aktiven
Teile des Threads lassen sich durch diesen Fortschritt von links nach rechts ablesen.
Wenn Sie einen ganzen Bereich auswählen, der die Reihenfolge der Methodenaufrufe umschließt,
wird in der Statuszeile die Basiszeit angezeigt, die zur Ausführung dieser Reihenfolge benötigt wurde. Sie können
die Basiszeit ermitteln, die der Thread bereits aktiv ist, indem Sie die Differenz zwischen den folgenden Zeiten
ermitteln:
- Zeigen Sie mit der Maus auf die obere horizontale Linie des ausgewählten gelben Bereichs, damit die
entsprechende Basiszeit in der Statuszeile angezeigt wird.
- Zeigen Sie auf die untere Kante des gelben ausgewählten Bereichs (der den Ausführungszeitraum während
der Ausführung der Methodensequenz abdeckt), und zeigen Sie die Basiszeit an diesem Punkt an.
Tipps
- Wenn das Diagramm überfüllt und schwer zu lesen ist, vergrößern
Sie den überfüllten Bereich.
- Wenn Sie eine Methode auswählen, werden alle von der Methode aufgerufenen Methoden gelb hervorgehoben.
- Sie können die Sichten auf die Workbench ziehen und übergeben. Bei Bedarf können Sie die Sichten auch nebeneinander anordnen.
- Abhängig von der Position des Cursors wird die entsprechende Basiszeit in der Statusleiste angezeigt.
- Klicken Sie zum Zurücksetzen der Sichtanzeige auf die Schaltfläche Zum Anfang.
Identifizieren häufig aufgerufener Methoden
So identifizieren Sie häufig aufgerufene Methoden:
- Verwenden Sie das Vergrößerungstool
zum Vergrößern einer Methodenaufrufreihenfolge.
- Suchen Sie Streifen mit der gleichen Farbe im ausgewählten Bereich. Diese Streifen signalisieren Methoden
des gleichen Klassenexemplars, die mehrere Male aufgerufen wurden.
- Prüfen Sie die Länge verschiedenfarbiger Streifen (von denen jeder eine Methode repräsentiert). Je länger der Streifen, desto länger die Ausführungszeit der jeweiligen Methode.
Garbage-Collection untersuchen
Im Normalfall lässt sich durch Untersuchen der Streifen in einem Benutzer-Thread in dieser Sicht nicht feststellen, ob die Garbage-Collection bereits für ein Objekt stattgefunden hat.
Gehen Sie folgendermaßen vor:
- Der Garbage-Collection-Thread ist standardmäßig ausgeblendet. Aktivieren Sie ihn, indem sie im Menü Kontext der Sicht Threads > GC auswählen.
- Prüfen Sie die Spalte ganz links in dieser Sicht. Diese Spalte ist für die Garbage-Collection reserviert und heißt 'GC-Thread'.
- Stellen Sie fest, ob sich in dieser Spalte ein einzelnes, dünnes Rechteck befindet. Das Rechteck befindet sich wahrscheinlich weit unterhalb der meisten
Methodenaufrufe des Objekts. Das Rechteck wird in der Spalte 'GC-Thread' angezeigt, wenn die Garbage-Collection für ein Objekt stattgefunden hat.
Phasen der Programmausführung identifizieren
Initialisierungsphase identifizieren
- Verwenden Sie das Vergrößerungstool
zum Vergrößern
der Methodenaufrufreihenfolge am Anfang des Haupt-Threads.
- Beachten Sie die Methoden, die mit -init- gekennzeichnet sind.
- Klicken Sie auf eine dieser Methoden. In der Statuszeile wird angezeigt,
dass diese Methode am Initialisierungsprozess (dem Zuweisen von Werten und Variablen,
die in der Anwendung verwendet werden) beteiligt ist.
Analysieren von Methoden mit der Sicht 'Methodenaufruf'
- Wählen Sie einen Monitor oder einen Agenten im Profilmonitor aus. Klicken Sie mit der rechten Maustaste, und wählen Sie dann die Option Öffnen mit > Ausführungsablauf aus. Die Sicht
'Ausführungsablauf' wird angezeigt.
- Wählen Sie die gewünschte Methode aus, klicken Sie die rechte Maustaste an und wählen Sie dann die Option
Methodenaufruf anzeigen aus.
- Verwenden Sie das Vergrößerungstool
zum Vergrößern
eines Anzeigebereichs. Die Streifen sind nach Klasse farblich gekennzeichnet und über horizontale Linien verbunden, die die Methodenaufrufe darstellen.
- Wählen Sie eine Methode aus, indem Sie auf ihren Namen klicken.
- Klicken Sie auf Sichten aktualisieren
, damit die aktuellen Daten
angezeigt werden.
- Beachten Sie die Zeile:

In dieser Zeile wird der Name der Methode gefolgt von n/m angezeigt, wobei n der momentan angezeigte Aufruf von den m Gesamtaufrufen der Methode ist.
- Klicken Sie auf Zurück
und Weiter
um alle Aufrufe der ausgewählten Methode (oder jede Nachricht für das ausgewählte Objekt) anzuzeigen. Der Bruch in der Symbolleiste wird entsprechend mit der aktuellen Aufrufnummer aktualisiert.
Finden eines Methodenaufrufers
Um den Ursprung eines Methodenaufrufs zu bestimmen, fahren Sie in der Sicht 'Methodenaufruf' mit den folgenden Schritten fort:
- Um das aufrufende Modul der Methode anzuzeigen, klicken Sie die auf die Schaltfläche Aufrufendes Modul anzeigen
. Die Methode
wird zusammen mit ihrem aufrufenden Modul (links von der Methode) angezeigt.
- Weitere Einzelheiten zum Aufrufer der Methode für jeden neuen Aufruf erhalten Sie, wenn Sie den Cursor über dem Streifen positionieren, der den Aufrufer in der Sicht darstellt. Die Informationen zum aufrufenden Modul werden dann in der Statuszeile angezeigt.
- Klicken Sie zum Anzeigen der Methode, die von einer ausgewählten Methode aufgerufen wird, auf die Schaltfläche Aufgerufene Methode anzeigen
.
(C) Copyright IBM Corporation 2000, 2006.