Lernprogramm: Analysieren der Profildaten von einem Java-Prozess
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 Hyades-Tools installieren.
- Halten Sie die Beispieldaten für die Profilermittlung (hcframe.jar) zum Import bereit. Die Datei sollte im folgenden Verzeichnis gespeichert werden:
Hyades-Installationsverzeichnis\eclipse\plugins\org.eclipse.hyades.collection.framework_3.3.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 Hyades-Installationsverzeichnis\eclipse\plugins\org.eclipse.hyades.collection.framework_3.3.0\hcframe.jar aus.
- Klicken Sie Öffnen an. Die JAR wird hinzugefügt.
- Klicken Sie die Registerkarte Profilermittlung an. Auf dieser Registerkarte können Sie die Kriterien für die
Profilermittlung angeben.
- Klicken Sie die Registerkarte Übersicht an. Auf dieser Registerkarte können Sie die Filtergruppen und den
entsprechenden Inhalt angeben.
- Klicken Sie die Schaltfläche Hinzufügen an, um eine neue Profilermittlungsgruppen zu erstellen. Der Assistent 'Profilermittlungsgruppe hinzufügen' wird geöffnet.
- Geben Sie auf der Seite 'Profilermittlungsgruppen' den Namen für diese Profilermittlungsgruppe ein und klicken Sie auf Weiter.
- Erweitern Sie auf der Seite 'Profilermittlungstyp' den Knoten Speicheranalyse, 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..
- Erweitern Sie den Knoten mit der Bezeichnung Zeitanalyse, 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 Profilermittlung vertraut machen sollen, also auch mit den Sichten 'Ausführungsablauf'
und 'Methodenaufruf', wählen Sie bitte Grafische Details zum Ausführungsablauf anzeigen aus. Aktivieren Sie außerdem das Markierungsfeld Vom Filtergruppe ausgeschlossene Grenzwertklasse erfassen und stellen Sie Grenzwertklassentiefe auf1 ein.
Klicken Sie auf Weiter.
- Auf der Seite 'Filtergruppe' können Sie die Untergruppe der Informationen angeben, die analysiert werden soll. Dies ist
sinnvoll, wenn Sie Klassen oder Pakete herausfiltern wollen, die nicht analysiert werden sollen.
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 dieses Paket 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 Fertig stellen.Eine neue
Profilermittlungsgruppe wurde der Liste der verfügbaren Profilermittlungsgruppen hinzugefügt und ist als die
zu verwendende Profilermittlungsgruppe hervorgehoben.
- Klicken Sie die Registerkarte Grenzwerte an. Diese Registerkarte steuert die erfasste Datenmenge, entweder
auf Grundlage der vergangenen Zeit oder auf Grundlage der Anzahl der Methodenaufrufe. Übernehmen Sie die
Standardwerte.
- 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 'Ausführungsablauf' untersuchen.
In dieser Sicht
wird die Ausführung des gesamten Programms dargestellt. Dabei wird die Zeit auf der vertikalen Achse angezeigt.
- 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 den entsprechenden Methodennamen (oder den Leerraum
darunter) an, 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.
- Erweitern Sie in der Tabelle 'Ausführungsablauf' den Thread, den Sie untersuchen möchten.
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 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, 2005. Alle Rechte vorbehalten.