Pamięć

Jak znaleźć i naprawić wycieki pamięci w systemie Windows 10?

Jak znaleźć i naprawić wycieki pamięci w systemie Windows 10?

ZA Wyciek pamięci to nieprawidłowe rozmieszczenie zasobów w programie komputerowym z powodu nieprawidłowej alokacji pamięci. Dzieje się tak, gdy nieużywana lokalizacja pamięci RAM pozostaje nieudostępniona. 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, gdy pamięć jest po prostu niedostępna, mimo że nie jest używana.

Wycieki pamięci w systemie Windows 10

Zanim zaczniesz, powinieneś wiedzieć, że wyciek pamięci to problem z oprogramowaniem do debugowania - na przykład w Javie, JavaScript, C/C++, Windows itp. Fizyczna wymiana pamięci RAM lub dysku twardego nie jest wymagana.

Czemu to jest złe

Oczywistym jest, że wyciek pamięci jest zły, ponieważ jest to błąd, wada systemu. 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 jej wyczerpanie.
  2. Wyczerpanie się pamięci powoduje starzenie się oprogramowania.
  3. Zmniejszona ilość dostępnej pamięci prowadzi do wydłużenia czasu odpowiedzi i niskiej wydajności systemu.
  4. Niesprawdzony wyciek pamięci może ostatecznie doprowadzić do awarii aplikacji.

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

Lokalizowanie wycieku

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

  1. Afirmacja: Ustalenie, czy doszło do wycieku.
  2. Znajdowanie wycieku pamięci w trybie jądra: Lokalizowanie wycieku spowodowanego przez komponent sterownika trybu jądra.
  3. Znajdowanie wycieku pamięci w trybie użytkownika: Lokalizowanie wycieku spowodowanego przez sterownik lub aplikację w trybie użytkownika.

Przydział pamięci

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

  1. Funkcja HealAlloc do alokacji pamięci sterty. Odpowiednikami środowiska uruchomieniowego C/C++ są malloc i new.
  2. Funkcja VirtualAlloc do bezpośredniej alokacji z systemu operacyjnego.
  3. Interfejsy API Kernel32 do przechowywania pamięci jądra dla aplikacji. Przykład, CreateFile, CreateThread.
  4. Interfejsy API User32 i interfejsy API Gdi32.

Zapobieganie wyciekom pamięci

Wszyscy wiemy, że lepiej zapobiegać niż leczyć, więc oto kilka sposobów zapobiegania wyciekom pamięci.

Monitorowanie nawyków

Musisz zwracać uwagę na nieprawidłowe użycie pamięci RAM przez poszczególne programy i aplikacje. Możesz przejść do Menedżera zadań Windows, naciskając CTRL+SHIFT+ESC i dodaj kolumny, takie jak uchwyty, obiekty użytkownika, obiekty GDI itp.

Pomoże Ci to łatwo monitorować wykorzystanie zasobów.

Czytać: Jakie są rodzaje pamięci w komputerze??

Narzędzia firmy Microsoft do diagnozowania wycieków pamięci

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

  1. Weryfikator aplikacji diagnozuje wycieki sterty.
  2. UMDH (składnik narzędzi do debugowania systemu Windows) diagnozuje wycieki dla poszczególnych procesów, monitorując alokacje pamięci sterty.
  3. Trace Capture do dokładnej analizy wykorzystania pamięci RAM.
  4. Xperf również śledzi wzorce alokacji sterty.
  5. CRT Debug Heap nie tylko śledzi alokacje sterty, ale także umożliwia praktyki kodowania w celu zminimalizowania wycieków.
  6. JavaScript Memory Leak Detector debuguje wycieki pamięci w kodach.

Wskazówki dotyczące użytkowania

  1. Użyj jądra UCHWYTs i inne inteligentne wskaźniki dla zasobów Win32 i alokacji sterty.
  2. Pobierz klasy do automatycznego zarządzania zasobami dla alokacji jądra z biblioteki ATL. Standard C++ ma auto_ptr do alokacji sterty.
  3. Hermetyzuj wskaźniki interfejsu COM w „inteligentnych wskaźnikach” za pomocą _com_ptr_t lub _bstr_t lub _wariant_t.
  4. Monitorować .Kod NET do nieprawidłowego wykorzystania pamięci.
  5. Unikaj wielu ścieżek wyjścia dla funkcji, aby umożliwić uwolnienie alokacji od zmiennych w większości bloków do końca funkcji.
  6. Używaj natywnych wyjątków tylko po zwolnieniu wszystkich alokacji w _finally block. Zapakuj całą stertę i obsługuj alokacje w inteligentnych wskaźnikach, aby używać wyjątków C++++.
  7. Zawsze dzwoń PropWariantWyczyść funkcja przed ponowną inicjalizacją 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. Ale zanim zaczniesz, pamiętaj, aby najpierw utworzyć punkt przywracania systemu.

1] Zamknij procesy i uruchom ponownie.

Jeśli zauważysz, że niepotrzebny proces zajmuje 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 wykorzystania przez inne procesy. Bez ponownego uruchomienia problem wycieku pamięci nie zostanie rozwiązany. Jednym szczególnym procesem, który ma błędy, które spowalniają komputer, jest Runtime Broker. Spróbuj, jeśli samo wyłączenie tego działa.

2] Narzędzia diagnostyczne pamięci

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

  1. Zapisz całą swoją ważną pracę.
  2. naciśnij Wygraj + R otworzyć Biegać okno.
  3. Wpisz polecenie mdsched.exe w Biegać okno.
  4. Uruchom ponownie komputer.
  5. Po ponownym uruchomieniu wykonaj podstawowe skanowanie lub przejdź do „zaawansowane' opcje takie jak 'Mieszanka testowa' lub 'Liczba podań'.
  6. naciśnij F10 rozpocząć test.

To wciąż są tymczasowe poprawki.

3] Sprawdź aktualizacje sterowników

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

  1. naciśnij Wygraj + R i otwórz Biegać okno. Rodzaj programista.msc i naciśnij Enter. Zabierze Cię do Menadżer urządzeń.
  2. Sprawdź, czy nie ma nieaktualnych sterowników i zaktualizuj je wszystkie.
  3. Aby uzyskać aktualizacje, które mogłeś przegapić, sprawdź Windows Update.

To było proste.

4] Optymalizacja wydajności

Dostosowanie systemu Windows pod kątem wydajności pozwoli zarządzać wszystkim, w tym planowaniem procesora i wykorzystaniem pamięci, aby zapobiec wyciekom pamięci. Wykonaj następujące kroki:

  1. Kliknij prawym przyciskiem myszy 'Ten komputer' i wybierz 'zaawansowane' ustawienia w lewym okienku.
  2. Pod 'zaawansowane' karta, przejdź do 'Występ', śledzony przez 'Ustawienia'.
  3. Sprawdź 'Dostosuj do najlepszej wydajności' i kliknij dobrze.
  4. Uruchom ponownie i sprawdź, czy problem został rozwiązany.

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

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

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

  1. Iść do 'Menadżer zadań'.
  2. Iść do 'Uruchomienie'.
  3. Wyłącz programy startowe, których domyślnie nie musisz uruchamiać.

6] Defragmentuj dysk twardy

Chociaż system Windows 10 robi to automatycznie, może być konieczne od czasu do czasu wykonanie defragmentacji dysków twardych, aby zoptymalizować wydajność:

  1. Iść do 'Ten komputer' lub 'Mój komputer'.
  2. Kliknij prawym przyciskiem systemowy dysk twardy (zwykle dysk C:).
  3. Iść do 'Przybory' pod 'Nieruchomości' i wybierz 'Optymalizować'.
  4. Wybierz dysk do defragmentacji i wybierz „Analizować'.

Uruchom ponownie komputer po nowej fragmentacji.

7] Wyczyść plik strony przy wyłączaniu

Teraz to się komplikuje - ale nie martw się. Oto jak wyczyścić plik strony przy każdym wyłączeniu:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerZarządzanie pamięcią

To powinno wystarczyć. Pamiętaj, że proces zamykania zajmie trochę więcej czasu.

9] Wyłącz Superfetch

Ta usługa systemu Windows optymalizuje wydajność, minimalizując czas uruchamiania. Pozwala systemowi 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. Szukaj usługi.msc i przejdź do Menedżera usług.
  2. Szukać 'Superpobieranie' i kliknij prawym przyciskiem myszy, aby przejść do 'Nieruchomości'.
  3. Wybierz 'Zatrzymać'.
  4. Również 'Wyłączyć'usługa z menu rozwijanego.
  5. Uruchom ponownie komputer i sprawdź, czy wydajność się poprawiła.

Włącz Superfetch, jeśli to nie zadziałało.

10] Sprawdź, czy nie ma złośliwego oprogramowania

Użyj oprogramowania antywirusowego innej firmy lub wewnętrznego programu Windows Defender, aby przeskanować i wyeliminować złośliwe oprogramowanie. Upewnij się, że program antywirusowy jest zaktualizowany, aby obsługiwał Twój system operacyjny, aby nie stał się przyczyną wycieku pamięci.

Każde rozwiązanie, którego możesz potrzebować, 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.

Gry How to download and Play Sid Meier's Civilization VI on Linux
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...
Gry How to Install and Play Doom on Linux
How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Gry Vulkan for Linux Users
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...