Gabinet

Znajdź i napraw wycieki pamięci w systemie Windows 10/8/7

Jak przejść na Windows 10 z Win 7 lub 8.1? ? [Darmowa aktualizacja bez klucza czy utraty danych]

Jak przejść na Windows 10 z Win 7 lub 8.1? ? [Darmowa aktualizacja bez klucza czy utraty danych]

Spisu treści:

Anonim

A Wyciek pamięci to niewłaściwe umieszczenie zasobu w programie komputerowym z powodu błędnego przydzielenia pamięci. Dzieje się tak, gdy nieużywana lokalizacja pamięci RAM pozostaje niewydana. Wycieku pamięci nie należy mylić z wyciekiem przestrzeni, który odnosi się do programu używającego więcej pamięci RAM niż to konieczne. Mówi się, że wyciek pamięci w systemie Windows 10/8/7 miał miejsce, kiedy pamięć nie jest dostępna, mimo że nie jest używana.

Wycieki pamięci w Windows 10

Zanim zaczniesz, powinieneś wiedzieć, że Wyciek pamięci to problem oprogramowania do debugowania - na przykład w Javie, JavaScript, C / C ++, Windows, itp. Fizyczne zastępowanie RAM lub dysku twardego nie jest wymagane.

Dlaczego jest źle

To oczywiste, że pamięć przeciek jest zły, ponieważ jest błędem, luką w systemie. Ale dowiedzmy się, jak dokładnie wpływa to na system:

  1. Ponieważ pamięć nie jest zwalniana, nawet gdy nie jest używana, powoduje to wyczerpywanie pamięci.
  2. Wyczerpanie pamięci powoduje starzenie się oprogramowania.
  3. Zmniejszona dostępna pamięć prowadzi do wydłużenia czasu reakcji i niskiej wydajności systemu.
  4. Niezaznaczone wycieki pamięci mogą ostatecznie doprowadzić do awarii aplikacji.

Aby zidentyfikować wyciek pamięci, programista musi mieć dostęp do kodu źródłowego program.

Lokalizacja wycieku

Aby rozwiązać problem, musimy go najpierw zidentyfikować. Podstawowe kroki w celu zlokalizowania wycieku pamięci:

  1. Afirmacja : Określanie, czy wystąpił wyciek.
  2. Znajdowanie wycieku pamięci w trybie jądra : Lokalizowanie wycieku spowodowanego przez składnik sterownika w trybie jądra.
  3. Znajdowanie wycieku pamięci w trybie użytkownika : Lokalizowanie wycieku spowodowanego przez sterownik trybu użytkownika lub aplikację

Przydział pamięci

Istnieją różne tryby, w których aplikacje przydzielają pamięć RAM. Jeśli przestrzeń nie zostanie zwolniona po użyciu, wyciek pamięci wystąpi niezależnie od trybu alokacji. Niektóre typowe wzorce alokacji to:

  1. HealAlloc funkcja alokacji pamięci sterty. Równoważniki środowiska wykonawczego C / C ++ to malloc i new.
  2. Funkcja VirtualAlloc do bezpośredniego przydziału z systemu operacyjnego.
  3. API Kernel32 do przechowywania pamięci jądra dla aplikacji. Przykład: CreateFile, CreateThread.
  4. Interfejsy użytkownika User32 i interfejsy API Gdi32.

Zapobieganie wyciekom pamięci

Wszyscy wiemy, że zapobieganie jest lepsze niż leczenie, więc oto kilka sposobów na zapobieganie wyciekom pamięci.

Zwyczaje monitorowania

Należy zwracać uwagę na nieprawidłowe wykorzystanie pamięci RAM przez poszczególne programy i aplikacje. Możesz przejść do Menedżera zadań Windows, naciskając klawisze CTRL + SHIFT + ESC i dodać kolumny, takie jak Uchwyty, Obiekty użytkownika, Obiekty GDI itp.

Pomoże to w łatwym monitorowaniu wykorzystania zasobów.

Narzędzia Microsoftu do diagnozowania wycieków pamięci

Różne narzędzia diagnozują przecieki pamięci dla różnych trybów alokacji:

  1. Aplikacja Verifier diagnozuje przecieki sterty.
  2. UMDH (składnik narzędzi debugowania systemu Windows) diagnozuje wycieki dla poszczególnych procesów poprzez monitorowanie alokacji pamięci sterty.
  3. Trace Capture do dokładnej analizy użycia pamięci RAM
  4. Xperf również śledzi wzorce alokacji sterty
  5. CRT Debug Heap nie tylko śledzi alerty sterty, ale także pozwala na minimalizowanie przecieków w praktykach kodowania.
  6. Wyciek pamięci JavaScript Detektor debuguje wycieki pamięci w kodach.

Wskazówki dotyczące użytkowania

  1. Użyj jądra UCHWYĆ s i inne inteligentne wskaźniki dla zasobów Win32 i alokacji sterty.
  2. Pobierz klasy dla automatycznego zarządzania zasobami dla przydziałów jądra z biblioteka ATL. Standard C ++ ma auto_ptr dla alokacji sterty.
  3. Enkapsuluje wskaźniki interfejsu COM w "inteligentnych wskaźnikach" za pomocą _com_ptr_t lub _bstr_t lub _variant_t .
  4. Monitoruj kod.NET pod kątem nietypowego użycia pamięci.
  5. Unikaj wielu ścieżek wyjścia dla funkcji, aby zwolnić alokacje zmiennych od większości bloków przed końcem funkcji.
  6. Używaj tylko rodzimych wyjątków po zwolnieniu wszystkich alokacji w bloku _finally. Zawiń całą stertę i przejmuj alokacje na inteligentne wskaźniki, aby używać wyjątków C ++.
  7. Zawsze wywoływaj funkcję PropVariantClear przed ponownym inicjalizowaniem lub odrzuceniem obiektu PROPVARIANT.

Rozwiązywanie problemów z wyciekami pamięci w systemie Windows

Podobnie jak różne sposoby zapobiegania wyciekom pamięci, istnieją różne sposoby na zatrzymanie wycieków pamięci.

1] Zamknij procesy i uruchom ponownie.

Jeśli zauważysz, że niepotrzebny proces zabiera zbyt dużo pamięci RAM, możesz zakończyć proces w Menedżerze zadań. Będziesz musiał ponownie uruchomić urządzenie, aby zwolnione miejsce było dostępne do użycia przez inne procesy. Bez błędu Restart pamięci wyciek nie zostanie rozwiązany. Jednym szczególnym procesem, który ma błędy spowalniające działanie komputera, jest Runtime Broker. Spróbuj, jeśli wyłączenie działa samodzielnie.

2] Narzędzia diagnostyczne pamięci

Aby uzyskać dostęp do wbudowanego narzędzia diagnostycznego pamięci dla systemu Windows:

  1. Zapisz wszystkie ważne zadania.
  2. Naciśnij klawisz Win + R aby otworzyć okno Uruchom .
  3. Wpisz polecenie mdsched.exe w oknie Uruchom .
  4. Uruchom ponownie komputer.
  5. Po uruchom ponownie, wykonaj podstawowe skanowanie lub przejdź do opcji " Zaawansowane ", takich jak " Mieszanie testów " lub " Liczba wyników `.
  6. Naciśnij klawisz F10 , aby rozpocząć test.

To są wciąż tymczasowe poprawki.

3] Sprawdź, czy aktualizacje sterowników

Nieaktualne sterowniki powodują wycieki pamięci. Aktualizuj wszystkie sterowniki:

  1. Naciśnij klawisz Win + R i otwórz okno Uruchom . Wpisz devmgmt.msc i naciśnij klawisz Enter. Nastąpi przejście do Menedżera urządzeń .
  2. Sprawdź nieaktualne sterowniki i zaktualizuj je wszystkie.
  3. W przypadku aktualizacji, które mogłeś pominąć, sprawdź w Windows Update.

To było proste.

4] Optymalizacja wydajności

Dostosowanie systemu Windows pod kątem wydajności pozwoli zarządzać wszystkim, łącznie z harmonogramem procesora i wykorzystaniem pamięci, aby zatrzymać wycieki pamięci. Wykonaj następujące kroki:

  1. Kliknij prawym przyciskiem myszy Ten komputer > i wybierz ustawienia Zaawansowane `na lewym panelu.
  2. Pod " Zaawansowane `, przejdź do` Wydajność `, a następnie` Ustawienia `.
  3. Sprawdź` Dopasuj, aby uzyskać najlepszą wydajność `i kliknij OK .
  4. Zrestartuj i sprawdź, czy problem został rozwiązany.

Jeśli to proste rozwiązanie nie działa, wypróbuj następne rozwiązanie.

5] Wyłącz programy działające przy uruchomieniu

Wyłączanie kłopotliwych programów jest jedynym sposobem na pozbycie się problemu z wyciekiem pamięci. Przejdź do Menedżera zadań i wyłącz program awaryjny. Jeśli nie wiesz, które programy powodują problemy, wykonaj następujące czynności:

  1. Przejdź do " Menedżer zadań ".
  2. Przejdź do " Uruchomienie ".
  3. Wyłącz programy startowe, których nie trzeba uruchamiać domyślnie.

6] Defrag Hard Drive

Chociaż system Windows 10 robi to automatycznie, być może trzeba czasami przeprowadzić defragmentację dysków twardych w celu zoptymalizowania wydajności:

  1. Przejdź do " Ten komputer " lub " Mój komputer ".
  2. Kliknij prawym przyciskiem systemowy dysk twardy (zwykle dysk C:).
  3. Przejdź do ` Narzędzia `pod` Właściwości `i wybierz` Optymalizuj `.
  4. Wybierz dysk do defragmentacji i wybierz` Analiza `.

Uruchom ponownie komputer po nowej fragmentacji.

7] Plik ClearPage przy zamknięciu

Teraz robi się skomplikowany - ale nie martw się. Oto, jak wyczyścić plik stronicowania przy każdym wyłączeniu:

  1. Wpisz regedit w oknie wyszukiwania, aby uruchomić edytor rejestru.
  2. Wprowadź tę ścieżkę: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager Zarządzanie pamięcią
  3. Zmień wartość ClearPageFileAtShutDown na "1".
  4. Zapisz zmiany i Zrestartuj urządzenie.

To powinno to zrobić.

9] Wyłącz Superfetch

Ta usługa systemu Windows optymalizuje wydajność, minimalizując czas rozruchu. Pozwala Windows zarządzać wykorzystaniem pamięci RAM. Życie po wyłączeniu Superfetch nie jest wygodne, ale zrób to, jeśli musisz. Przynajmniej spróbuj tego samodzielnie, aby wyizolować problem:

  1. Wyszukaj services.msc i przejdź do Menedżera usług.
  2. Wyszukaj ` Superfetch ` i kliknij prawym przyciskiem myszy, aby przejść do ` Właściwości `.
  3. Wybierz ` Zatrzymaj `.
  4. Również z menu rozwijanego Wyłącz > usługę.
  5. Zrestartuj komputer i sprawdź, czy wydajność się poprawiła.

Włącz pobieranie z wyprzedzeniem, jeśli ten nie działa.

10] Sprawdź pod kątem złośliwego oprogramowania

Użyj zewnętrznego oprogramowania antywirusowego lub wewnętrznego systemu Windows Defender do skanowania i eliminowania złośliwego oprogramowania. Upewnij się, że program antywirusowy został zaktualizowany, aby obsługiwał Twój system operacyjny, tak aby nie stał się przyczyną wycieku pamięci.

Każde rozwiązanie, które może być konieczne, aby znaleźć lub zapobiec wyciekom pamięci, jest właśnie tutaj. Możesz przeczytać więcej o wyciekach pamięci w MSDN i Microsoft.