Lernprogramm: Analysieren der Profildaten von einem Java-Prozess
Ziele
Analysieren der durch Erstellung eines Java-Prozessprofils gewonnenen Daten unter Verwendung
der Sichten zur Profilerstellung und Protokollierung in der Perspektive 'Profilerstellung 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 Hyades-Tools installieren.
- Die Beispieldateien für die Profilerstellung zum Importieren bereithalten. Die Dateien sollten sich im folgenden Pfad befinden:
Installationsverzeichnis\eclipse\plugins\org.eclipse.hyades.collection.framework\src\org\eclipse\hyades\test\collection\framework
Beschreibung
In diesem Lernprogramm werden Sie die verschiedenen Sichten zur Profilerstellung und Protokollierung zum Analysieren der Beispielklasse PerformanceExample.class
verwenden. In dem Beispiel wird ein Rahmen mit zwei Schalflächen geöffnet.
Sie werden die folgenden Tasks durchführen:
- Öffnen der Perspektive 'Profilerstellung 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 auf Perspektive öffnen
> Andere > Profilerstellung und Protokollierung
Gehen Sie folgendermaßen vor:
- Klicken Sie auf Profil
. Die Seite 'Klasse' des Assistenten
'Java-Prozess starten' wird geöffnet.
- Treffen Sie folgende Auswahl: Eine Klasse im Dateisystem auswählen.
- Klicken Sie auf Durchsuchen und suchen Sie nach der Beispielklasse, die sich im Verzeichnis
Installationsverzeichnis\eclipse\plugins\org.eclipse.hyades.collection.framework\bin\org\eclipse\hyades\test\collection\framework
Klicken Sie auf Weiter. Die Seite 'Ziel' wird geöffnet.
- ProfileProject und DefaultMonitor sind die Standardressourcen für die Profilerstellung, die in dieser
Profilerstellungssitzung zum Speichern von Daten verwendet werden können. Klicken Sie auf Weiter. Die Seite 'Profilfilter' wird geöffnet.
- Akzeptieren Sie die Standardfilter. Klicken Sie auf Weiter. Die Seite 'Profiloptionen' wird angezeigt.
- Das Markierungsfeld Die Anwendung verbraucht zu viel Speicher ist bereits ausgewählt.
Dadurch werden speicherbezogene Daten in die Profildaten für die Anwendung aufgenommen..
- Wenn Sie Ausführungsinformationen erhalten möchten, verwenden Sie die Option Die Anwendung ist zu langsam. 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 auf Details anzeigen und wählen Sie dann Grafische Details zum
Ausführungsablauf anzeigen aus. Klicken Sie auf Fertig stellen.
- Die erforderlichen Profildaten werden erstellt und der Agent erscheint zusammen mit dem Prozess in der Sicht 'Profilmonitor'.
- Aktivieren Sie die Anzeige von Ordnern, Monitoren und Hosts. Dadurch sehen Sie das Überwachungsprogramm, das Ihre Daten gruppiert, sowie
die Maschine, auf der Sie die Workbench ausführen.
Anzeigen des Ausführungsverhaltens in einem bestimmten Zeitraum
- Öffnen Sie die Sicht 'Ausführungsablauf': Wählen Sie Ihren Monitor aus, klicken Sie mit der rechten Maustaste und wählen Sie dann Öffnen mit > Ausführungsablauf aus.
- In dieser Sicht wird die Ausführung des gesamten Programms dargestellt. Dabei wird die Zeit auf der vertikalen Achse im rechten Bereich dargestellt.
- Klicken Sie auf einen Methodennamen (oder auf den Leerraum darunter), um die Methode auswählen. Dadurch werden alle 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.

- 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.

Analysieren eines Prozesses mit der Sicht 'Ausführungsablauf'
Öffnen der Sicht 'Ausführungsablauf'
- Wählen Sie das Überwachungsprogramm oder den Agenten in der Sicht '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 geöffnet.
Hinweis: Verwenden Sie die Schalfläche Sichten aktualisieren
,
um die Sichten der Anwendung zu aktualisieren, während die Anwendung überwacht wird.
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 der 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 der gleichen Klasseninstanz, 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:
- 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.
Identifizieren der Phasen der Programmausführung
Identifizieren der Initialisierungsphase
- 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 'Methodenaufruf' wird angezeigt.
- Wählen Sie die gewünschte Methode aus, klicken Sie mit der rechten Maustaste 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 zu dem ausgewählten Objekt) anzuzeigen.Der Bruch in der Funktionsleiste 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:
- Zum Anzeigen des Aufrufers einer Methode klicken Sie auf die Schaltfläche Aufrufer anzeigen
. Die Methode wird zusammen mit ihrem Aufrufer (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 Aufrufer 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, 2003. Alle Rechte vorbehalten.