Identyfikowanie przecieków pamięci

Wymagania wstępne:

Przeciek pamięci jest to błąd w logice dynamicznego przydzielania pamięci programu, będący przyczyną niepowodzenia podczas odzyskiwania usuniętej pamięci. Oznacza to, że niepotrzebne obiekty nie są odzyskiwane. Niespodziewanie duża liczba takich przypadków może sugerować przeciek pamięci. Poważny przeciek pamięci może prowadzić do zamknięcia aplikacji spowodowanego brakiem pamięci.

Przyczyną przecieków pamięci są obiekty, które zatrzymują odwołania do innych obiektów, uniemożliwiając tym samym odzyskiwanie wstrzymywanych obiektów przez funkcję czyszczenia pamięci.   Identyfikację takich odwołań może ułatwić tabela odwołań do obiektów.

Znajdowanie przecieku pamięci w aplikacji

Aby zidentyfikować przeciek pamięci w aplikacji, wykonaj następujące czynności:

  1. W perspektywie Profilowanie i rejestrowanie wybierz monitor lub agenta z widoku monitora profilowania. 
  2. Kliknij monitor lub agenta prawym przyciskiem myszy i wybierz opcję Zbieraj odwołania do obiektów. Rozpocznie się zbieranie odwołań do obiektów.
  3. Ponownie kliknij prawym przyciskiem myszy i wybierz opcję Otwórz za pomocą > Odwołanie do obiektu. Zostanie otwarta tabela odwołań do obiektów.
  4. Wybierz ikonę menu lokalnego Ikona przycisku z trójkątem i wybierz opcję Pokaż odwołania do.
  5. Sprawdź listę obiektów i liczbę odwołań do tych obiektów.   Obiekty z odwołaniami mogą powodować problemy z przeciekami pamięci. 

Znajdowanie przecieku pamięci w operacji transakcyjnej

Ta procedura może pomóc w identyfikacji fazy w programie, która powoduje tworzenie nowych obiektów, ale nie zwalnia ich, uniemożliwiając tym samym ich usunięcie przez funkcję czyszczenia pamięci. Na przykład program tworzy okno dialogowe, ale po zamknięciu tego okna związane z nim obiekty są wstrzymywane.   Aby zidentyfikować przeciek pamięci w operacji transakcyjnej, wykonaj następujące czynności:

  1. W perspektywie Profilowanie i rejestrowanie wybierz monitor lub agenta z widoku monitora profilowania. 
  2. Zbierz odwołania do obiektów przed rozpoczęciem rozpatrywanej operacji. Kliknij prawym przyciskiem myszy i wybierz opcję Zbieraj odwołania do obiektów. Rozpocznie się zbieranie odwołań do obiektów.
  3. Kliknij prawym przyciskiem myszy monitor i wybierz opcję Otwórz za pomocą > Odwołania do obiektów. Sprawdź tabelę odwołań do obiektów, zwracając uwagę na utworzone odwołania do obiektów.
  4. Uruchom operację, która ma zostać sprawdzona.
  5. Zbierz odwołania do obiektów po zakończeniu operacji. Kliknij prawym przyciskiem myszy i ponownie wybierz opcję Zbieraj odwołania do obiektów.
  6. Kliknij prawym przyciskiem myszy monitor i wybierz opcję Otwórz za pomocą > Odwołania do obiektów. Sprawdź tabelę odwołań do obiektów, zwracając uwagę na utworzone odwołania do obiektów.
  7. Aby sprawdzić konkretne odwołania do obiektów, wykonaj następujące czynności:
    1. Z menu rozwijanego w tabeli odwołań do obiektów wybierz opcję Pokaż odwołania pochodzące od.
    2. Wybierz klasę obiektu, a następnie rozwiń element.
    3. Zidentyfikuj odwołania, które uniemożliwiają odzyskiwanie nowych obiektów.

 

Pojęcia pokrewne
Narzędzie profilujące - przegląd
Zasoby profilowania
Tabela odwołań do obiektów

Czynności pokrewne
Profilowanie aplikacji
Uruchamianie lub przyłączanie procesu Java