Suchen und Beheben von Speicherlecks in Windows 10

Ein Speicherverlust ist eine Fehlplatzierung der Ressource in einem Computerprogramm aufgrund einer fehlerhaften Speicherzuordnung. Dies geschieht, wenn ein nicht verwendeter RAM-Speicherort nicht freigegeben bleibt. Ein Speicherverlust ist nicht mit einem Speicherverlust zu verwechseln, der sich auf ein Programm bezieht, das mehr RAM als erforderlich verwendet. Ein Speicherverlust auf einem Windows 10/8/7-System soll aufgetreten sein, wenn der Speicher trotz Nichtverwendung nicht zugänglich ist.

Speicherlecks in Windows 10

Bevor Sie beginnen, sollten Sie wissen, dass Speicherverlust ein Softwareproblem beim Debuggen ist - beispielsweise in Java, JavaScript, C / C ++, Windows usw. Das physische Ersetzen von RAM oder Festplatte ist nicht erforderlich.

Speicherverlust in Windows 10

Warum ist es schlecht

Es ist offensichtlich, dass ein Speicherverlust schlecht ist, da es sich um einen Fehler handelt, einen Fehler im System. Aber lassen Sie uns herausfinden, wie genau sich dies auf das System auswirkt:

  1. Da der Speicher auch bei Nichtgebrauch nicht freigegeben wird, führt dies zu einer Speicherentleerung.
  2. Die Erschöpfung des Speichers führt zur Alterung der Software.
  3. Reduzierter verfügbarer Speicher führt zu einer längeren Reaktionszeit und einer schlechten Leistung des Systems.
  4. Ein ungeprüfter Speicherverlust kann schließlich zum Absturz einer Anwendung führen.

Um einen Speicherverlust zu identifizieren, muss ein Programmierer Zugriff auf den Quellcode des Programms haben.

Das Leck lokalisieren

Um ein Problem zu lösen, müssen wir es zuerst identifizieren. Die grundlegenden Schritte zum Auffinden eines Speicherverlusts sind:

  1. Bestätigung : Feststellen, ob ein Leck aufgetreten ist.
  2. Suchen eines Speicherverlusts im Kernelmodus: Auffinden eines Lecks, der durch eine Treiberkomponente im Kernelmodus verursacht wurde.
  3. Suchen eines Speicherverlusts im Benutzermodus : Auffinden eines Lecks, der durch einen Treiber oder eine App im Benutzermodus verursacht wurde.

Speicherzuweisung

Es gibt verschiedene Modi, in denen Anwendungen RAM zuweisen. Wenn der Speicherplatz nach der Verwendung nicht freigegeben wird, tritt der Speicherverlust unabhängig von der Zuweisungsart auf. Einige gängige Zuordnungsmuster sind:

  1. HealAlloc-Funktion für die Heap-Speicherzuweisung. Die C / C ++ - Laufzeitäquivalente sind malloc und neu.
  2. VirtualAlloc-Funktion für die direkte Zuordnung vom Betriebssystem.
  3. Kernel32-APIs zum Speichern des Kernelspeichers für die App. Beispiel: CreateFile, CreateThread.
  4. User32-APIs und Gdi32-APIs.

Speicherlecks verhindern

Wir alle wissen, dass Vorbeugen besser ist als Heilen. Hier sind einige Möglichkeiten, um einen Speicherverlust zu verhindern.

Gewohnheiten überwachen

Speicherlecks in Windows 10

Sie müssen auf abnormale RAM-Nutzung durch einzelne Programme und Anwendungen achten. Sie können zum Windows Task-Manager wechseln, indem Sie STRG + UMSCHALT + ESC drücken und Spalten wie Handles, Benutzerobjekte, GDI-Objekte usw. hinzufügen.

Auf diese Weise können Sie die Ressourcennutzung einfach überwachen.

Microsoft-Tools zur Diagnose von Speicherlecks

Verschiedene Tools diagnostizieren Speicherlecks für verschiedene Zuordnungsmodi:

  1. Application Verifier diagnostiziert Heap-Lecks.
  2. UMDH (eine Komponente der Windows-Debugging-Tools) diagnostiziert Lecks für einzelne Prozesse durch Überwachung der Heap-Speicherzuordnungen.
  3. Trace Capture für eine gründliche Analyse der RAM-Nutzung.
  4. Auch Xperf verfolgt Heap-Zuordnungsmuster.
  5. CRT Debug Heap verfolgt nicht nur die Heapzuordnungen, sondern ermöglicht auch Codierungspraktiken, um Lecks zu minimieren.
  6. JavaScript Memory Leak Detector behebt Speicherlecks in Codes.

Verwendungstipps

  1. Verwenden Sie Kernel- HANDLEs und solche anderen intelligenten Zeiger für Win32-Ressourcen und Heap-Zuordnungen.
  2. Rufen Sie Klassen für die automatische Ressourcenverwaltung für Kernelzuweisungen aus der ATL-Bibliothek ab. Der C ++ - Standard verfügt über auto_ptr für Heapzuordnungen .
  3. Kapselung von COM-Schnittstellenzeigern in „Smart Pointer“ mithilfe von _com_ptr_t oder _bstr_t oder _variant_t .
  4. Überwachen Sie den .NET-Code auf abnormale Speichernutzung.
  5. Vermeiden Sie mehrere Exit-Pfade für Funktionen, damit Zuordnungen bis zum Ende einer Funktion in den meisten Blöcken von Variablen befreit werden.
  6. Verwenden Sie native Ausnahmen erst, nachdem Sie alle Zuordnungen im Block _finally freigegeben haben. Wickeln Sie alle Heap- und Handle-Zuordnungen in intelligente Zeiger um, um C ++ - Ausnahmen zu verwenden.
  7. Rufen Sie immer die PropVariantClear- Funktion auf, bevor Sie ein PROPVARIANT-Objekt neu initialisieren oder verwerfen.

Fehlerbehebung bei Speicherlecks in Windows

Genau wie die verschiedenen Möglichkeiten, Speicherlecks zu verhindern, gibt es verschiedene Möglichkeiten, Speicherlecks zu stoppen. Denken Sie jedoch daran, zuerst einen Systemwiederherstellungspunkt zu erstellen, bevor Sie beginnen.

1] Prozesse schließen und neu starten.

Wenn Sie feststellen, dass ein unnötiger Prozess zu viel RAM beansprucht, können Sie den Prozess im Task-Manager beenden. Sie müssen das Gerät neu starten, damit der freigegebene Speicherplatz für andere Prozesse verfügbar ist. Ohne einen Neustart wird das Problem mit dem Speicherverlust nicht behoben. Ein besonderer Prozess, der Fehler beim Verlangsamen des PCs aufweist, ist Runtime Broker. Versuchen Sie, ob das Deaktivieren allein funktioniert.

2] Speicherdiagnose-Tools

Windows-Speicherdiagnose

So greifen Sie auf das integrierte Speicherdiagnose-Tool für Windows zu:

  1. Speichern Sie alle Ihre wichtigen Arbeiten.
  2. Drücken Sie Win + R , um das Run- Fenster zu öffnen .
  3. Geben Sie den Befehl mdsched.exe in das Fenster Ausführen ein.
  4. Starten Sie den PC neu.
  5. Führen Sie nach einem Neustart einen einfachen Scan durch oder wählen Sie die Optionen " Erweitert " wie " Testmix " oder " Anzahl der Bestanden ".
  6. Drücken Sie F10 , um den Test zu starten.

Dies sind immer noch vorübergehende Korrekturen.

3] Suchen Sie nach Treiberaktualisierungen

Treibersoftware aktualisieren

Veraltete Treiber verursachen Speicherlecks. Halten Sie alle Treiber auf dem Laufenden:

  1. Drücken Sie Win + R und öffnen Sie das Run- Fenster. Typ devmgmt.msc und drücken Sie die Eingabetaste. Sie gelangen zum Geräte-Manager .
  2. Suchen Sie nach veralteten Treibern und aktualisieren Sie sie alle.
  3. Informationen zu fehlenden Updates finden Sie unter Windows Update.

Das war einfach.

4] Optimieren Sie die Leistung

Für optimale Leistung anpassen

Durch Anpassen der Leistung von Windows wird alles verwaltet, einschließlich Prozessorplanung und Speichernutzung, um Speicherlecks zu verhindern. Folge diesen Schritten:

  1. Klicken Sie mit der rechten Maustaste auf " Dieser PC " und wählen Sie im linken Bereich " Erweiterte " Einstellungen.
  2. Gehen Sie auf der Registerkarte " Erweitert " zu " Leistung ", gefolgt von " Einstellungen ".
  3. Aktivieren Sie " Für beste Leistung anpassen " und klicken Sie auf " OK" .
  4. Starten Sie neu und überprüfen Sie, ob das Problem behoben ist.

Wenn diese einfache Lösung nicht funktioniert hat, versuchen Sie es mit der nächsten Lösung.

5] Deaktivieren Sie Programme, die beim Start ausgeführt werden

Startprogramme

Das Deaktivieren der problematischen Programme ist die einzige Möglichkeit, das Problem mit dem Speicherverlust zu beheben. Gehen Sie zum Task-Manager und deaktivieren Sie das Problemlösungsprogramm. Wenn Sie nicht wissen, welche Programme die Probleme verursachen, gehen Sie folgendermaßen vor:

  1. Gehen Sie zu ' Task Manager '.
  2. Gehen Sie zu ' Startup '.
  3. Deaktivieren Sie die Startprogramme, die Sie nicht standardmäßig ausführen müssen.

6] Festplatte defragmentieren

Datenträgerdefragmentierung

Obwohl Windows 10 dies automatisch für Sie erledigt, müssen Sie die Festplatten möglicherweise gelegentlich defragmentieren, um die Leistung zu optimieren:

  1. Gehen Sie zu " Dieser PC " oder " Arbeitsplatz ".
  2. Klicken Sie mit der rechten Maustaste auf die Systemfestplatte (normalerweise C: Laufwerk).
  3. Gehen Sie zu ‚ Extras ‘ unter ‚ Eigenschaften ‘ und wählen Sie ‚ optimieren ‘.
  4. Wählen Sie das zu defragmentierende Laufwerk aus und wählen Sie " Analysieren ".

Starten Sie Ihren Computer nach der neuen Fragmentierung neu.

7] ClearPage-Datei beim Herunterfahren

Es wird jetzt komplex - aber keine Sorge. So löschen Sie die Auslagerungsdatei bei jedem Herunterfahren:

  • Geben Sie regedit auf Suche , um das Registrierungs - Editor zu starten.
  • Geben Sie diesen Pfad ein:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Ändern Sie den Wert von ClearPageFileAtShutDown in '1'.
  • Speichern Sie die Änderungen und starten Sie das Gerät neu.

Das sollte es tun. Denken Sie daran, dass das Herunterfahren etwas länger dauert.

9] Deaktivieren Sie Superfetch

Dieser Windows-Dienst optimiert die Leistung durch Minimierung der Startzeit. Damit kann Windows die RAM-Nutzung verwalten. Das Leben nach dem Deaktivieren von Superfetch ist nicht bequem, aber tun Sie es, wenn Sie müssen. Versuchen Sie dies zumindest alleine, um das Problem einzugrenzen:

  1. Suchen Sie nach services.msc und gehen Sie zu Services Manager.
  2. Suchen Sie nach " Superfetch " und klicken Sie mit der rechten Maustaste darauf, um zu " Eigenschaften " zu gelangen.
  3. Wählen Sie ' Stop '.
  4. Auch ‚ Disable ‘ der Dienst aus dem Drop-Down - Menü.
  5. Starten Sie den PC neu und prüfen Sie, ob sich die Leistung verbessert hat.

Aktivieren Sie Superfetch, wenn dies nicht funktioniert hat.

10] Auf Malware prüfen

Verwenden Sie eine Antivirensoftware eines Drittanbieters oder den firmeneigenen Windows Defender von Windows 10, um Malware zu scannen und zu beseitigen. Stellen Sie sicher, dass das Antivirenprogramm aktualisiert wurde, um Ihr Betriebssystem zu unterstützen, damit es nicht zum Grund für den Speicherverlust wird.

Hier finden Sie jede Lösung, die Sie möglicherweise benötigen, um Speicherlecks zu finden oder zu verhindern. Weitere Informationen zu Speicherverlusten bei MSDN und Microsoft finden Sie hier.

Original text


Speicherlecks in Windows 10