Erinnerung

So finden und beheben Sie Speicherlecks in Windows 10

So finden und beheben Sie Speicherlecks in Windows 10

EIN Speicherleck ist eine Fehlplatzierung von Ressourcen in einem Computerprogramm aufgrund einer fehlerhaften Speicherzuweisung. Es passiert, wenn ein nicht verwendeter RAM-Speicherort unveröffentlicht bleibt. Ein Speicherleck ist nicht mit einem Speicherplatzleck zu verwechseln, das sich auf ein Programm bezieht, das mehr RAM als nötig verwendet. Ein Speicherleck auf einem Windows 10/8/7 System soll aufgetreten sein, wenn der Speicher trotz Nichtbenutzung einfach nicht zugänglich ist.

Speicherlecks in Windows 10

Bevor Sie beginnen, sollten Sie wissen, dass Memory Leak ein Softwareproblem ist, das zu debuggen ist - zum Beispiel in Java, JavaScript, C/C++, Windows usw. Ein physischer Austausch von RAM oder Festplatte ist nicht erforderlich.

Warum ist es schlecht

Es ist offensichtlich, dass ein Speicherleck schlecht ist, weil es ein Fehler ist, ein Fehler im System. Aber lassen Sie uns herausfinden, wie genau es sich auf das System auswirkt:

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

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

Lokalisieren des Lecks

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

  1. Bejahung: Feststellen, ob ein Leck aufgetreten ist.
  2. Speicherleck im Kernel-Modus finden: Lokalisieren eines Lecks, das durch eine Kernel-Modus-Treiberkomponente verursacht wurde.
  3. Speicherleck im Benutzermodus finden: Lokalisieren eines Lecks, das durch einen Benutzermodus-Treiber oder eine App verursacht wurde.

Speicherzuweisung

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

  1. HealAlloc-Funktion für die Heap-Speicherzuweisung. Die C/C++-Laufzeitäquivalente sind malloc und new.
  2. VirtualAlloc-Funktion zur direkten Zuweisung vom OS.
  3. Kernel32-APIs zum Halten 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, ein Speicherleck zu verhindern.

Überwachungsgewohnheiten

Sie müssen nach anormaler RAM-Auslastung durch einzelne Programme und Anwendungen Ausschau halten. Sie können zum Windows Task-Manager gehen, indem Sie drücken STRG+UMSCHALT+ESC und fügen Sie die Spalten wie Handles, Benutzerobjekte, GDI-Objekte usw. hinzu.

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

Lesen: Welche Speichertypen gibt es in einem Computer??

Microsoft-Tools zur Diagnose von Speicherlecks

Verschiedene Tools diagnostizieren Speicherlecks für verschiedene Zuordnungsmodi:

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

Nutzungstipps

  1. Kernel verwenden GRIFFs und andere intelligente Zeiger für Win32-Ressourcen und Heap-Zuweisungen.
  2. Holen Sie sich Klassen für die automatische Ressourcenverwaltung für Kernel-Zuweisungen aus der ATL-Bibliothek. C++-Standard hat auto_ptr für Heap-Zuordnungen.
  3. Kapseln Sie COM-Schnittstellenzeiger in „intelligente Zeiger“ mit Hilfe von _com_ptr_t oder _bstr_t oder _variante_t.
  4. Überwachen Sie die .NET-Code für anormale Speichernutzung.
  5. Vermeiden Sie mehrere Exit-Pfade für Funktionen, damit Zuordnungen in den meisten Blöcken bis zum Ende einer Funktion von Variablen befreit werden.
  6. Verwenden Sie native Ausnahmen erst, nachdem Sie alle Zuweisungen im _finally-Block . freigegeben haben. Wickeln Sie alle Heap- und Handle-Zuweisungen in intelligente Zeiger ein, um C++-Ausnahmen zu verwenden.
  7. Rufen Sie immer an PropVariantClear Funktion, bevor Sie ein PROPVARIANT-Objekt neu initialisieren oder verwerfen.

Fehlerbehebung bei Speicherlecks in Windows

Genau wie die verschiedenen Möglichkeiten, Speicherverluste zu verhindern, gibt es verschiedene Möglichkeiten, Speicherverluste zu stoppen. Aber bevor Sie beginnen, denken Sie daran, zuerst einen Systemwiederherstellungspunkt zu erstellen.

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 Speicherleck nicht gelöst. Ein besonderer Prozess, der Fehler aufweist, um den PC zu verlangsamen, ist Runtime Broker. Versuchen Sie, ob das Deaktivieren allein funktioniert.

2] Speicherdiagnosetools

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

  1. Speichern Sie alle Ihre wichtigen Arbeiten.
  2. Drücken Sie Gewinn + R die öffnen Lauf Fenster.
  3. Geben Sie den Befehl ein mdsched.exe in dem Lauf Fenster.
  4. PC neu starten.
  5. Führen Sie nach einem Neustart einen einfachen Scan durch oder gehen Sie zum 'Fortgeschritten'Optionen wie'Testmischung' oder 'Passanzahl'.
  6. Drücken Sie F10 um den Test zu starten.

Dies sind immer noch temporäre Korrekturen.

3] Nach Treiberaktualisierungen suchen

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

  1. Drücken Sie Gewinn + R und öffne die Lauf Fenster. Art devmgmt.msc und drücke Enter. Es bringt dich zum Gerätemanager.
  2. Suchen Sie nach veralteten Treibern und aktualisieren Sie sie alle.
  3. Für Updates, die Sie möglicherweise verpasst haben, überprüfen Sie Windows Update.

Das war einfach.

4] Leistung optimieren

Durch die Anpassung von Windows an die Leistung wird alles verwaltet, einschließlich der Prozessorplanung und der Speichernutzung, um Speicherlecks zu stoppen. Folge diesen Schritten:

  1. Klicken Sie mit der rechten Maustaste auf 'Dieser PC' und wählen Sie 'Fortgeschritten' Einstellungen im linken Bereich.
  2. Unter dem 'Fortgeschritten'Tab, gehe zu 'Performance', gefolgt von 'die Einstellungen'.
  3. Prüfen 'Für optimale Leistung anpassen' und klicke OK.
  4. Starten Sie neu und prü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

Das Deaktivieren der problematischen Programme ist die einzige Möglichkeit, das Problem mit dem Speicherleck zu beseitigen. Gehen Sie zum Task-Manager und deaktivieren Sie das Problembehandlungsprogramm. Wenn Sie nicht wissen, welche Programme die Probleme verursachen, gehen Sie wie folgt vor:

  1. Gehe zu 'Taskmanager'.
  2. Gehe zu 'Anlaufen'.
  3. Deaktivieren Sie die Startprogramme, die Sie nicht standardmäßig ausführen müssen.

6] Festplatte defragmentieren

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

  1. Gehe zu 'Dieser PC' oder 'Mein Computer'.
  2. Klicken Sie mit der rechten Maustaste auf die Systemfestplatte (normalerweise Laufwerk C:).
  3. Gehe 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

Jetzt wird es komplex – aber keine Sorge. So löschen Sie die Auslagerungsdatei bei jedem Herunterfahren:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerSpeicherverwaltung

Das sollte es tun. Denken Sie daran, dass Ihr Shutdown-Prozess etwas länger dauern wird.

9] Superfetch deaktivieren

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 zumindest dies allein, um das Problem zu isolieren:

  1. Suche Dienstleistungen.msc und gehen Sie zu Dienste-Manager.
  2. Suchen 'Superfetch' und klicken Sie mit der rechten Maustaste darauf, um zu 'Eigenschaften'.
  3. Wählen 'Halt'.
  4. Ebenfalls 'Deaktivieren' der Dienst aus dem Dropdown-Menü.
  5. Starten Sie den PC neu und prüfen Sie, ob sich die Leistung verbessert hat.

Aktivieren Sie Superfetch, wenn dieser nicht funktioniert hat.

10] Auf Malware prüfen

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

Jede Lösung, die Sie jemals brauchen könnten, um Speicherlecks zu finden oder zu verhindern, finden Sie hier. Sie können mehr über Speicherlecks auf MSDN und Microsoft lesen.

Beste Spielkonsolen-Emulatoren für Linux
Dieser Artikel listet beliebte Spielekonsolen-Emulationssoftware auf, die für Linux verfügbar ist. Emulation ist eine Softwarekompatibilitätsschicht, ...
Beste Linux-Distributionen für Gaming im Jahr 2021
Das Linux-Betriebssystem hat sich weit von seinem ursprünglichen, einfachen, serverbasierten Aussehen entfernt. Dieses Betriebssystem hat sich in den ...
So erfassen und streamen Sie Ihre Gaming-Sitzung unter Linux
In der Vergangenheit galt das Spielen von Spielen nur als Hobby, aber mit der Zeit verzeichnete die Spieleindustrie ein enormes Wachstum in Bezug auf ...