Erste Schritte: Analyse auf Speicherverluste

Speicherverluste können den Durchsatz eines Programms verringern und unter Umständen sogar zu einem Absturz des Programms führen. In Java entstehen Speicherverluste oft, wenn Objekte unangemessen an Referenzen festhalten. Die Perspektive 'Profilermittlung und Protokollierung' umfasst Ansichten, mit denen Sie die Speicherbelegung Ihrer Anwendung analysieren und diese Lecks feststellen können.

Für die Analyse auf Speicherverluste sind folgende Ansichten verfügbar:

Wenn Sie ein Leck gefunden haben, können Sie mit dem Probekit eigene Sonden entwerfen, um bestimmte Objekte, die Verluste verursachen könnten, zu untersuchen.

Wenn Sie Verlustkandidaten schnell erkennen möchten, führen Sie eine Analyse auf Speicherverluste durch. Erstellen Sie dazu ein Profil mit der Profilgruppe 'Analyse auf Speicherverluste'. Die Speicherbelegung können Sie auch untersuchen, wenn Sie für die Profilerstellung die Profilgruppe 'Speicheranalyse' verwenden. Die so ermittelten Daten können Sie im Diagramm der Objektreferenzen und in den Ansichten 'Objektreferenzen' und 'Objektdetails' anzeigen, jedoch nicht zum Generieren einer Liste von Verlustkandidaten verwenden.

Übergeordnetes Thema: Erste Schritte bei der Bestimmung von Laufzeitproblemen

Analyse auf Speicherverluste durchführen

Die Analyse auf Speicherverluste verwendet erweiterte Algorithmen, um anhand eines Vergleichs zweier Heap-Speicherauszüge potenzielle Speicherverluste zu identifizieren. Sie können eine Profilerstellungskonfiguration so definieren, dass Heap-Speicherauszüge manuell oder automatisch zu von Ihnen in der Profilgruppe festgelegten Zeiten erfasst werden.

Voraussetzungen:

Gehen Sie wie folgt vor, um eine Verlustanalyse durchzuführen:

  1. Wählen Sie im Dialogfenster 'Profil ermitteln' auf der Registerseite 'Profilerstellung' die Profilgruppe Analyse auf Speicherverluste - Manuelle Heap-Speicherauszüge oder Analyse auf Speicherverluste - Zeitgesteuerte Heap-Speicherauszüge aus.
  2. Klicken Sie auf Profil ermitteln, um Ihre Anwendung zu starten. Daraufhin wird die Ansicht 'Verlustkandidaten' mit den Statusinformationen des Profilerstellungsdurchgangs geöffnet.
  3. Wenn Sie Heap-Speicherauszüge manuell erfassen, gehen Sie wie folgt vor:
    1. Starten Sie Ihre Anwendung, bis alle erforderlichen Daten im Speicher enthalten sind. Führen Sie die zu untersuchenden Transaktionen mehrere Male aus.
    2. Erfassen Sie den ersten Heap-Speicherauszug, indem Sie in der Ansicht 'Verlustkandidaten' auf den Knopf 'Heap-Speicherauszug erfassen' Knopf 'Heap-Speicherauszug erfassen' klicken. Der Heap-Speicherauszug wird als Profilerstellungsressource zum Monitor für Profilerstellung hinzugefügt.
    3. Führen Sie die zu untersuchenden Transaktionen erneut mehrere Male aus.
    4. Erfassen Sie einen zweiten Heap-Speicherauszug. Anschließend können Sie Ihre Anwendung beenden.
  4. Wenn Sie Heap-Speicherauszüge zeitgesteuert erfassen, sollten Sie Ihre Anwendung so lange ausführen, bis in der Ansicht 'Verlustkandidaten' angezeigt wird, dass beide Heap-Speicherauszüge erfasst wurden und Sie mit der Analyse beginnen können. Der erste Heap-Speicherauszug wird standardmäßig nach 10 Minuten (600 Sekunden) und der zweite nach weiteren 10 Minuten erfasst. Anschließend können Sie Ihre Anwendung beenden.
  5. Klicken Sie in der Ansicht 'Verlustkandidaten' auf den Knopf 'Auf Verluste analysieren' Knopf 'Auf Verluste analysieren'.
  6. Klicken Sie im Dialogfenster 'Auswahl der Optionen für Verlustanalyse' auf OK. Nach Abschluss der Analyse listet die Ansicht 'Verlustkandidaten' Objekte auf, die zur Zeit des zweiten Heap-Speicherauszugs noch immer Referenzen auf Objekte enthielten. Objekte, die mit der höchsten Wahrscheinlichkeit zu Speicherverlusten führen, sind als Erste genannt.
  7. Klicken Sie doppelt auf den Kandidaten mit der höchsten Verlustwahrscheinlichkeit, um ihn in der Ansicht 'Diagramm der Objektreferenzen' anzuzeigen. Im Diagramm ist der Pfad zwischen der Quelle des Lecks (dem Objekt, das die Referenzen hält) und dem potenziell vom Verlust betroffenen Objekt hervorgehoben, um Ihnen die Navigation durch das Diagramm zu erleichtern. Sie können zu jedem Objekt oder Pfadsegment statistische Informationen aufrufen, indem Sie den Mauszeiger auf das Objekt oder Segment bewegen. So können Sie untersuchen, wie viel Speicher gebunden wird, und entscheiden, ob einige der Referenzen entfernt werden können.
  8. Klicken Sie in der Ansicht 'Diagramm der Objektreferenzen' doppelt auf ein Objekt, um in der Ansicht 'Objektdetails' Informationen zum Objekt anzuzeigen. Diese Ansicht zeigt alle Informationen zum aktuellen Objekt im Tabellenformat an. Dazu gehören Daten zu den Objekten, die auf das aktuelle Objekt verweisen, sowie zu Objekten, auf die das aktuelle Objekt verweist.

Jetzt können Sie Ihren Code modifizieren und Referenzen, die nicht mehr sinnvoll sind, entfernen, damit der Garbage Collector nicht benötigte Objekte erfassen kann. Erstellen Sie erneut ein Profil Ihrer Anwendung, um zu überprüfen, ob Sie das Leck beseitigt haben und ob weitere Lecks vorhanden sind.

Zusätzliche Informationen hierzu finden Sie im Abschnitt Speicherverluste analysieren.

Speicherbelegung mit der Speicheranalyse untersuchen

Mit der Profilgruppe 'Speicheranalyse', die den Profiltyp 'Speicherverlustanalyse' enthält, können Sie Objektreferenzen sammeln und Heap-Speicherauszüge anzeigen. Sie können diese Daten in den Ansichten 'Diagramm der Objektreferenzen', 'Objektreferenzen' und 'Objektdetails' anzeigen, jedoch nicht zum Generieren einer Liste von Verlustkandidaten verwenden.

Gehen Sie zum Untersuchen der Speicherbelegung wie folgt vor:

  1. Wählen Sie im Dialogfenster 'Profil ermitteln' auf der Registerseite 'Profilerstellung' die Profilgruppe Speicheranalyse aus. Diese Profilgruppe ist nicht für die automatische Feststellung von Verlustkandidaten geeignet.
  2. Klicken Sie auf Profil ermitteln, um Ihre Anwendung zu starten.
  3. Testen Sie die zu analysierenden Abschnitte Ihrer Anwendung.
  4. Klicken Sie im Monitor für Profilerstellung mit der rechten Maustaste auf die Profilerstellungsressource 'Agent' und wählen Sie im Popup-Menü 'Objektverweise erfassen' aus. Anschließend können Sie Ihr Programm beenden. Im Monitor für Profilerstellung wird eine Profilerstellungsressource mit den für den Durchgang gesammelten Daten angezeigt.
  5. Wenn Sie die Objektreferenzen anzeigen möchten, klicken Sie mit der rechten Maustaste auf die Profilerstellungsressource. Wählen Sie dann im Popup-Menü Öffnen mit... und den Namen der Ansicht aus, die geöffnet werden soll.
Nutzungsbedingungen | Feedback
(C) Copyright IBM Corporation 2000, 2004. Alle Rechte vorbehalten.