Büro

Suchen und Reparieren von Memory Leaks in Windows 10/8/7

Memory Leak FIX For Windows 10/8/7 [Tutorial]

Memory Leak FIX For Windows 10/8/7 [Tutorial]

Inhaltsverzeichnis:

Anonim

A Speicherverlust ist eine Fehlplatzierung der Ressource in einem Computerprogramm aufgrund einer fehlerhaften Speicherzuweisung. Es passiert, wenn ein nicht genutzter RAM-Speicherort unveröffentlicht bleibt. Ein Speicherleck ist nicht mit einem Speicherleck zu verwechseln, der sich auf ein Programm bezieht, das mehr RAM als nötig benötigt. Ein Speicherleck auf einem Windows 10/8/7-System soll stattgefunden haben, wenn der Speicher trotz Nichtbenutzung nicht erreichbar ist.

Speicherlecks in Windows 10

Bevor Sie damit anfangen, sollten Sie das wissen Speicherleck ist ein Softwareproblem zum Debuggen - beispielsweise in Java, JavaScript, C / C ++, Windows usw. Physikalisch ersetzt man RAM oder Festplatte nicht.

Warum ist es schlecht

Es ist offensichtlich ein Speicher Leck ist schlecht, weil es ein Fehler ist, ein Fehler im System. Aber lasst uns herausfinden, wie genau es das System beeinflusst:

  1. Da der Speicher nicht freigegeben wird, auch wenn er nicht verwendet wird, führt dies zu einer Speichererschöpfung.
  2. Erschöpfung des Speichers führt zu alter Software.
  3. Reduzierter verfügbarer Speicher führt zu erhöhter Reaktionszeit und schlechter Systemleistung.
  4. Ungeprüfter Speicherleck kann zum Absturz einer Anwendung führen.

Um ein Speicherleck zu erkennen, muss ein Programmierer Zugriff auf den Quellcode von das Programm.

Lokalisieren des Lecks

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

  1. Affirmation : Bestimmen, ob ein Leck aufgetreten ist
  2. Suchen im Kernel-Modus-Speicherleck : Lokalisieren eines durch eine Kernelmodus-Treiberkomponente verursachten Lecks.
  3. Speicherleck im Benutzermodus finden : Leck durch Benutzermodustreiber oder App gefunden

Speicherzuweisung

Es gibt verschiedene Modi, in denen Anwendungen RAM zuweisen. Wenn der Speicherplatz nach der Verwendung nicht freigegeben wird, tritt der Speicherverlust unabhängig vom Zuweisungsmodus auf. Einige allgemeine Zuweisungsmuster 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 enthalten Kernelspeicher für die App. Beispiel, CreateFile, CreateThread.
  4. User32-APIs und Gdi32-APIs.

Verhindern von Speicherlecks

Wir alle wissen, dass Prävention besser ist als Heilung, also hier einige Möglichkeiten, einen Speicherverlust zu verhindern.

Überwachungsgewohnheiten

Sie müssen die abnormale RAM-Auslastung einzelner Programme und Anwendungen im Auge behalten. Sie können den Windows Task-Manager aufrufen, indem Sie STRG + UMSCHALT + ESC drücken und die Spalten Handles, Benutzerobjekte, GDI-Objekte usw. hinzufügen.

Dies hilft Ihnen, die Ressourcennutzung zu überwachen.

Microsoft Tools zur Diagnose von Speicherlecks

Verschiedene Tools diagnostizieren Speicherlecks für verschiedene Zuweisungsmodi:

  1. Application Verifier diagnostiziert Heap-Leaks.
  2. UMDH (eine Komponente von Windows Debugging Tools) diagnostiziert Lecks für einzelne Prozesse durch Überwachung von Heap-Speicherzuweisungen.
  3. Trace Capture für eine gründliche Analyse der RAM-Auslastung.
  4. Auch Xperf verfolgt Heap-Zuweisungsmuster.
  5. CRT Debug Heap verfolgt nicht nur Heap-Zuordnungen, sondern ermöglicht auch Programmierpraktiken, Lecks zu minimieren.
  6. JavaScript Memory Leak Detector debuggt Speicherlecks in Codes.

Verwendungstipps

  1. Verwenden Sie den Kernel HANDLE s und andere Smartpointer für Win32-Ressourcen und Heapzuweisungen.
  2. Erhalten Sie Klassen für die automatische Ressourcenverwaltung für Kernelzuordnungen von die ATL-Bibliothek. Der C ++ - Standard hat auto_ptr für Heap-Zuordnungen
  3. Verkapseln Sie COM-Schnittstellenzeiger innerhalb von "Smartpointern" mit Hilfe von _com_ptr_t oder _bstr_t oder _variant_t .
  4. Überwachen Sie den.NET-Code auf unnormale Speicherauslastung.
  5. Vermeiden Sie mehrere Exit-Pfade für Funktionen, um Zuordnungen in den meisten Blöcken bis zum Ende einer Funktion von Variablen zu befreien.
  6. Verwenden Sie nur native Ausnahmen nachdem alle Zuweisungen im Block _finally freigegeben wurden. Umschließen Sie alle Heap- und Handle-Zuweisungen in intelligente Zeiger, um C ++ - Ausnahmen zu verwenden.
  7. Rufen Sie immer die Funktion PropVariantClear auf, bevor Sie ein PROPVARIANT -Objekt neu initialisieren oder verwerfen.

Fehlerbehebung bei Speicherverlusten in Windows

Genau wie die verschiedenen Möglichkeiten zum Verhindern von Speicherlecks gibt es verschiedene Möglichkeiten, Speicherlecks zu verhindern

1] Prozesse schließen und neu starten

Wenn Sie sehen, dass ein nicht benötigter Prozess zu viel RAM belegt, 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 Neustart wird das Speicherleck nicht behoben. Ein bestimmter Prozess, der Fehler hat, um den PC zu verlangsamen, ist Runtime Broker. Versuchen Sie, ob das Deaktivieren allein funktioniert.

2] Speicherdiagnosetools

So greifen Sie auf das integrierte Speicherdiagnoseprogramm für Windows zu:

  1. Speichern Sie alle wichtigen Aufgaben.
  2. Drücken Sie Win + R Öffnen Sie das Fenster Ausführen
  3. Geben Sie im Fenster Ausführen den Befehl mdsched.exe ein
  4. Starten Sie den PC neu
  5. Nach a starten Sie neu, führen Sie einen einfachen Scan durch oder wählen Sie die Optionen Erweitert wie Testmix oder Passzähler .
  6. Drücken Sie F10 um den Test zu starten

Dies sind immer noch temporäre Fixes.

3] Nach Treiberupdates suchen

Veraltete Treiber verursachen Speicherlecks. Halten Sie alle Treiber auf dem neuesten Stand:

  1. Drücken Sie Win + R und öffnen Sie das Fenster Run . Geben Sie devmgmt.msc ein und drücken Sie die Eingabetaste. Sie gelangen zum Geräte-Manager .
  2. Suchen Sie nach veralteten Treibern und aktualisieren Sie sie alle.
  3. Für Updates, die Sie verpasst haben, überprüfen Sie Windows Update.

Dies war einfach.

4] Optimieren der Leistung

Durch die Anpassung von Windows an die Leistung wird alles verwaltet, einschließlich Prozessorzeitplanung und Speichernutzung, um Speicherlecks zu verhindern. Führen Sie folgende Schritte aus:

  1. Klicken Sie mit der rechten Maustaste auf Dieser PC und wählen Sie im linken Bereich Einstellungen Erweitert
  2. Unter Erweitert `tab, gehe zu` Leistung `, gefolgt von` Einstellungen `.
  3. Prüfe` Adjust für die beste Leistung `und klicke OK .
  4. Neu starten und prüfen, ob das Problem behoben ist.

Wenn diese einfache Lösung nicht funktioniert hat, versuchen Sie die nächste Lösung.

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

Das Deaktivieren der problematischen Programme ist der einzige Weg, um das Problem des Speicherlecks loszuwerden. Wechseln Sie zum Task-Manager, und deaktivieren Sie das Störenfriedprogramm. Wenn Sie nicht wissen, welche Programme den Fehler verursachen, tun Sie dies:

  1. Gehen Sie zu Task-Manager .
  2. Gehen Sie zu Start .
  3. Deaktivieren Sie die Autostart-Programme, die nicht standardmäßig ausgeführt werden müssen.

6] Festplatte defragmentieren

Obwohl Windows 10 dies automatisch für Sie erledigt, müssen Sie gelegentlich die Festplatten 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 Werkzeuge `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 kompliziert - aber keine Sorge. So löschen Sie die Auslagerungsdatei bei jedem Herunterfahren:

  1. Geben Sie regedit in Suchen ein, um den Registrierungs-Editor zu starten.
  2. Geben Sie den folgenden Pfad ein: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  3. Ändern Sie den Wert von ClearPageFileAtShutDown auf `1`.
  4. Speichern Sie die Änderungen und starten Sie das Gerät neu.

Das sollte es tun.

9] Superfetch deaktivieren

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

  1. Suchen Sie services.msc und gehen Sie zu Services Manager.
  2. Suchen Sie nach Superfetch und klicken Sie mit der rechten Maustaste darauf, um fortzufahren ` Eigenschaften `.
  3. Wählen Sie ` Stop `.
  4. Auch ` Deaktivieren Sie den Dienst aus dem Dropdown-Menü.
  5. Starten Sie den PC neu und überprüfen Sie, ob sich die Leistung verbessert hat.

Aktivieren Sie Superfetch, wenn dieser nicht funktioniert.

10] Auf Malware prüfen

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

Hier finden Sie alle Lösungen, die Sie benötigen, um Speicherlecks zu finden oder zu verhindern. Sie können mehr über Speicherverluste auf MSDN und Microsoft lesen.