Übung 1.2: Heap-Speicherauszüge erfassen
Bevor Sie mit dieser Übung beginnen, sollten Sie Übung 1.1: Erforderliche Ressource importieren ausgeführt haben.
Szenario
In Ihrer Organisation gibt es ein dreischichtiges Warteschlangensystem, das zu einer Webproxyanwendung gehört. Jede Schicht des Warteschlangensystem hat seine eigene Warteschlange. Das Testteam hat bei der Anwendung einen Speicherverlust festgestellt und vermutet, dass
er durch das Warteschlangensystem verursacht wird. Sie sind der Entwickler einer der Warteschlangen und sollen herausfinden,
welche Schicht für den Speicherverlust verantwortlich ist.
Übersicht
Um eine Speicherverlustanalyse durchzuführen, müssen Sie zwei Java Heap-Speicherauszüge erfassen.
Der Heap ist ein Speicherblock, in dem die aktive JVM (Java Virtual Machine)
Java-Objekte speichert. Der Java-Heap-Speicher wird von einem Garbage Collector verwaltet, der
automatisch den Speicher von Java-Objekten freigibt, auf die es keine Referenzen mehr gibt.
Ein Heap-Speicherauszug ist ein Image des Heap-Inhalts zu einem bestimmten Zeitpunkt.
Sie benötigen zwei Heap-Speicherauszüge, so dass Sie während der Ausführung Ihrer Anwendung
die Änderung der Speicherbelegung von einem Zeitpunkt zum anderen
sehen können. Ein integrierter Algorithmus vergleicht die beiden Heap-Speicher und identifiziert Objekte, die im Speicher verblieben sind, obwohl sie nicht mehr
benötigt werden. Der Algorithmus analysiert die folgenden Indikatoren, um potenzielle Lecks festzustellen: Objekte,
die über den gesamten Zeitraum zwischen den beiden Heap-Speicherauszügen im Speicher enthalten sind, ein Anstieg
der Objektanzahl einer gegebenen Klasse im zweiten Heap-Speicherauszug und die Anzahl der Referenzen
auf ein Objekt.
Erfassung der Heap-Speicherauszüge vorbereiten
Um Heap-Speicherauszüge zu erfassen, müssen Sie wie folgt auf die Perspektive "Profilermittlung und Protokollierung" umschalten:
- Wählen Sie in der Menüleiste der Softwareentwicklungsplattform Fenster > Perspektive öffnen > Andere... aus, um das Dialogfenster "Perspektive auswählen" zu öffnen.
- Klicken Sie unten links im Dialogfenster auf Alle anzeigen. In dem Markierungsfeld erscheint eine Markierung.
- Wählen Sie in der Liste der Perspektiven Profilermittlung und Protokollierung aus und klicken Sie auf OK.
- Falls das Dialogfenster "Aktivierung bestätigen" geöffnet wird,
klicken Sie auf Funktionalitäten immer aktivieren und Frage nicht erneut stellen. Klicken Sie dann auf OK.
- Die Softwareentwicklungsplattform schaltet auf die
Perspektive "Profilermittlung und Protokollierung" um.
Heap-Speicherauszüge erfassen
Für dieses Lernprogramm werden Sie die Heap-Speicherauszüge manuell erfassen. (Alternativ dazu könnten Sie die Zeitintervalle für
die automatische Erfassung der Heap-Speicherauszüge festlegen oder vorhandene Heap-Speicherauszüge importieren.)
Gehen Sie wie folgt vor, um die Heap-Speicherauszüge zu erfassen:
- Führen Sie die Anwendung aus:
- Wählen Sie in der Menüleiste Ausführen > Profil ermitteln... aus, um das Dialogfenster "Profil ermitteln" zu öffnen.
- Klicken Sie in der Konfigurationsliste doppelt auf Java-Anwendung. Daraufhin erscheint in der Liste
ein Eintrag Neue_Konfiguration.
- Geben Sie im Namensfeld ThreeTierQueue_MemLkAnalysis ein.
- Klicken Sie auf der Hauptregisterseite neben dem Projektfeld auf Durchsuchen. Daraufhin
wird das Dialogfenster "Projektauswahl" geöffnet.
- Wählen Sie ThreeTierQueue aus und klicken Sie auf OK.
- Klicken Sie neben dem Feld "Klasse main" auf Suchen.
- Wählen Sie im Dialogfenster "main-Typ auswählen" TestThreeTierQueue aus und klicken Sie auf OK.
- Klicken Sie im Dialogfenster "Profil ermitteln" auf das Register "Profilerstellung".
- Markieren Sie auf dem untergeordneten Register "Übersicht" die Profilgruppe
"Analyse auf Speicherverluste - Manuelle Heap-Speicherauszüge". (Eine Profilgruppe definiert den Typ der
Profilerstellungsdaten, die für den Durchgang gesammelt werden sollen.)
- Klicken Sie auf Profil ermitteln. Die Anwendung wird ausgeführt und die Anzeige ändert sich wie folgt:
- Im Monitor für Profilerstellung erscheint eine Profilerstellungsressource für den Prozess.
- Die Ansicht "Verlustkandidaten" wird geöffnet und zeigt eine Nachricht zum aktuellen Status mit Anweisungen für die weiteren Schritte an.
Anmerkung: Falls die Sicherheitsnachricht angezeigt wird, dass der Agent Controller nicht verfügbar ist,
lesen Sie den Abschnitt Datenerfassung nicht möglich.
- Erfassen Sie wie folgt die Heap-Speicherauszüge:
- Wählen Sie in der Menüleiste Fenster > Sicht anzeigen > Konsole aus, um die Konsolansicht zu öffnen, in
der Sie die Verarbeitung der Anwendung verfolgen können.
- Warten Sie ungefähr eine halbe Minute, bis die Anwendung hochgefahren ist und alle
Klassen, für die Sie das Profil erstellen möchten, geladen und initialisiert wurden.
- Führen Sie die Anweisungen in der Ansicht "Verlustkandidaten" aus. Klicken Sie in der Funktionsleiste
auf den Knopf "Heap-Speicherauszug erfassen"
, um
den Basis-Heap-Speicherauszug zu erfassen. Dieser Auszug bildet den Ausgangspunkt
für den Heap-Vergleich. In der Ansicht "Monitor für Profilerstellung" erscheinen jetzt weitere Profilerstellungsressourcen, eine
für die automatische Verlusterkennung und eine für den gerade erfassten Heap-Speicherauszug.
- Setzen Sie die Anwendungsausführung eine weitere Minute fort und führen Sie erneut die Anweisungen in der Ansicht "Verlustkandidaten" aus.
Erfassen Sie auf dieselbe Weise einen zweiten Heap-Speicherauszug.
Im Monitor für Profilerstellung erscheint eine Profilerstellungsressource für den zweiten Heap-Speicherauszug.
- Klicken Sie in der Konsolansicht auf den Knopf "Beenden"
,
um den Prozess zu beenden.
Datenerfassung nicht möglich
Vor dem Sammeln von Profilerstellungsdaten muss der Agent Controller aktiviert werden. Falls Sie eine Nachricht empfangen,
dass der Agent Controller nicht verfügbar ist, vergewissern Sie sich, dass der Agent Controller installiert ist.
Starten Sie den Agent Controller manuell und wiederholen Sie den Vorgang. Diesbezügliche Anweisungen finden
Sie im Installationshandbuch. Auf das Installationshandbuch können Sie vom Launchpad aus zugreifen. Sie finden es auch auf
der Produkt-CD unter disk1/install.html.
Nachdem Sie die Daten erfasst haben, können Sie mit Übung 1.3: Verlustkandidaten analysieren beginnen.