Übung 1.3: Verlustkandidaten analysieren

Bevor Sie mit dieser Übung beginnen, sollten Sie Übung 1.2: Heap-Speicherauszüge erfassen ausgeführt haben.

In dieser Übung werden Sie zunächst eine Liste von Objekten (z. B. von Arrays, Vektoren oder Sitzungen) generieren, die scheinbar Verluste verursachen. Diese Objekte sind die Verlustkandidaten. Anschließend werden Sie die Liste analysieren, um vorliegende Lecks festzustellen.

Liste der Verlustkandidaten generieren

Generieren Sie die Liste wie folgt:

  1. Folgen Sie den Anweisungen in der Ansicht "Verlustkandidaten" und klicken Sie in der Funktionsleiste auf den Knopf "Auf Verluste analysieren" . Daraufhin wird das Dialogfenster "Auswahl der Optionen für Verlustanalyse" geöffnet.
  2. Vergewissern Sie sich, dass in dem Dialogfenster die Markierungsfelder für die beiden Heap-Speicherauszüge ausgewählt sind.
    Anmerkung: Der Schwellenwert ist standardmäßig auf 20 eingestellt. Es werden demzufolge nur Kandidaten mit einer Verlustwahrscheinlichkeit von 20 oder mehr angezeigt. (Weitere Informationen zu Wahrscheinlichkeitswerten finden Sie an späterer Stelle in dieser Übung.)
  3. Klicken Sie auf OK, um die Liste zu generieren. Der Anzeiger unten rechts auf der Softwareentwicklungsplattform gibt an, das Verlustkandidaten gefunden wurden.

Ansicht "Verlustkandidaten" im Überblick

Nach Abschluss des Prozesses zeigt die Ansicht "Verlustkandidaten" eine Liste der Verlustkandidaten an.

Jeder Kandidat hat einen Wahrscheinlichkeitswert zwischen 100 und 1, wobei ein Kandidat mit der höchsten Verlustwahrscheinlichkeit einen Wert von 100 hat. Die anderen Kandidaten werden dementsprechend eingestuft und in absteigender Wahrscheinlichkeit aufgelistet. (Der Heap-Vergleichsalgorithmus berechnet die Wahrscheinlichkeitswerte ausgehend von der Größe des Lecks und der Zunahme des Lecks während des Intervalls zwischen den beiden Heap-Speicherauszügen.)

Für diesen Profilerstellungsdurchgang war der Schwellenwert auf 20 gesetzt. Alle Kandidaten mit einer Verlustwahrscheinlichkeit von 19 und weniger werden nicht angezeigt.

Für jeden Verlustkandidaten enthält die Ansicht folgende Daten:

Leck analysieren und identifizieren

Identifizieren Sie das Leck wie folgt:

  1. Schauen Sie sich in der Ansicht "Verlustkandidaten" die Daten des Kandidaten mit einer Wahrscheinlichkeit von 100 an.
  2. Klicken Sie doppelt auf den Verlustkandidaten. Daraufhin wird die Ansicht "Diagramm der Objektreferenzen" geöffnet und zeigt grafische Daten zum Verlustkandidaten an. (Es kann einige Zeit dauern, bis der Heap-Speicherauszug für die Anzeige aufbereitet ist.)
  3. Untersuchen Sie das Diagramm der Objektreferenzen. Achten Sie auf die folgenden Punkte:
  4. Bewegen Sie den Cursor auf den Pfad zwischen dem Object-Array und dem String-Objekt, um eine Kurzinfo anzuzeigen. Die Kurzinfo enthält einen "Zähler", der mit der Anzahl der Verluste in der Ansicht "Verlustkandidaten" übereinstimmt. Dies ist somit die Zeichenfolgengruppe, die als Leck identifiziert wurde.
  5. Beachten Sie, dass sowohl die zweite als auch die dritte Warteschlange Referenzen auf das Object-Array enthalten. Die dritte Warteschlange ist in der Ansicht "Verlustkandidaten" jedoch nicht als vom Verlust betroffen angegeben. Hierfür gibt es mehrere mögliche Erklärungen:
  6. Klicken Sie im Diagramm der Objektreferenzen doppelt auf das Objekt String. Daraufhin wird die Ansicht "Objektdetails" geöffnet. Sie zeigt alle Details zum String-Objekt an sowie alle Objekte, die auf dieses Objekt verweisen, und alle Objekte, auf die dieses Objekt verweist. In der Ansicht "Objektdetails" können Sie durch die referenzierenden Objekte navigieren, wenn Sie auf eines dieser Objekte klicken. Durch die referenzierten Objekte (auf die das Objekt verweist) können Sie navigieren, wenn Sie auf eines dieser Objekte klicken.

Was haben Sie herausgefunden? Sie wissen jetzt, dass die sekundäre Warteschlange das vom Verlust betroffene Objekt ist und dass der Verlust auftritt, weil ein Vector-Objekt an Referenzen auf zu viele String-Objekte festhält.

Jetzt können Sie mit Übung 1.4: Speicherverlust korrigieren beginnen.

Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2000, 2005. Alle Rechte vorbehalten.