Suchen und beheben Sie Speicherlecks in Windows 11/10

Ein Speicherleck(Memory Leak) 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 11/10/8/7 System soll stattgefunden haben, wenn der Speicher trotz Nichtbenutzung einfach nicht zugänglich ist.

Speicherlecks in Windows 11/10

Bevor Sie beginnen, sollten Sie wissen, dass ein Speicherleck(Memory) ein zu debuggendes Softwareproblem ist – zum Beispiel in Java , JavaScript , C/C++, Windows usw. Das physische Ersetzen von RAM oder Festplatte ist nicht erforderlich.

Speicherleck in Windows 10

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 dann nicht freigegeben wird, wenn er nicht verwendet wird, führt dies zu einer Speichererschöpfung.
  2. Die Erschöpfung des Speichers führt zur Alterung der Software.
  3. Reduzierter verfügbarer Speicher führt zu verlängerter Antwortzeit und schlechter Leistung des Systems.
  4. Ein ungeprüftes Speicherleck 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 Auffinden eines Speicherlecks sind:

  1. Bestätigung(Affirmation) : Bestimmen, ob ein Leck aufgetreten ist.
  2. Speicherleck(Finding Kernel-mode memory leak) im Kernelmodus finden : Lokalisieren eines Lecks, das durch eine Treiberkomponente im Kernelmodus verursacht wurde.
  3. Suchen von Speicherlecks im Benutzermodus(Finding User-mode memory leak) : Lokalisieren eines Lecks, das durch einen Treiber oder eine App im Benutzermodus verursacht wird.

Speicherzuweisung

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

  1. HealAlloc- Funktion für Heap-Speicherzuordnung. Die C/C++-Laufzeitäquivalente sind malloc und new.
  2. VirtualAlloc- Funktion zur direkten Zuweisung vom Betriebssystem.
  3. Kernel32-APIs zum Halten des Kernelspeichers für die App. Beispiel(Example) , CreateFile , CreateThread .
  4. User32-APIs und Gdi32-APIs.

Verhindern Sie Speicherlecks in Windows

Wir alle wissen, dass Vorbeugen besser als Heilen ist. Hier sind einige Möglichkeiten, wie Sie einem Gedächtnisverlust vorbeugen können.

Beobachtungsgewohnheiten

Speicherlecks in Windows 10

Sie müssen auf abnormale RAM - Nutzung durch einzelne Programme und Anwendungen achten. Sie können zum Windows Task-Manager gehen, indem Sie CTRL+SHIFT+ESC drücken und die Spalten wie Handles , User Objects , GDI Objects , etc. hinzufügen.

Dies hilft Ihnen, die Ressourcennutzung einfach zu überwachen.

Lesen Sie(Read) : Was sind die Arten von Speicher in einem Computer?(What are the Types of Memory in a 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 der Windows-Debugging-Tools ) diagnostiziert Lecks für einzelne Prozesse, indem es Heap-Speicherzuordnungen überwacht.
  3. Trace Capture für eine gründliche Analyse der RAM - Nutzung.
  4. Auch Xperf verfolgt Heap-Zuweisungsmuster.
  5. CRT Debug Heap verfolgt nicht nur Heap-Zuweisungen, sondern ermöglicht auch Codierungspraktiken, um Lecks zu minimieren.
  6. JavaScript Memory Leak Detector debuggt Speicherlecks in Codes.

Nutzungstipps

  1. Verwenden Sie Kernel- HANDLEs(HANDLE) und andere intelligente Zeiger für Win32 - Ressourcen und Heap-Zuweisungen.
  2. Rufen Sie(Get) Klassen für die automatische Ressourcenverwaltung für Kernelzuweisungen aus der ATL - Bibliothek ab. Der C++-Standard hat auto_ptr für Heap-Zuweisungen.
  3. Kapseln Sie COM(Encapsulate COM) -Schnittstellenzeiger in „intelligente Zeiger“ mit Hilfe von _com_ptr_t oder _bstr_t oder _variant_t .
  4. Überwachen Sie(Monitor) den .NET -Code auf abnormale Speichernutzung.
  5. Vermeiden Sie(Avoid) mehrere Austrittspfade für Funktionen, damit Zuweisungen in den meisten Blöcken bis zum Ende einer Funktion von Variablen befreit werden.
  6. Verwenden Sie(Use) native Ausnahmen nur, nachdem Sie alle Zuordnungen im _finally- Block freigegeben haben. Wickeln Sie(Wrap) alle Heap- und Handle-Zuordnungen in intelligente Zeiger ein, um C++-Ausnahmen zu verwenden.
  7. Rufen Sie immer die PropVariantClear- Funktion auf, bevor Sie ein (PropVariantClear)PROPVARIANT- Objekt neu initialisieren oder verwerfen .

Beheben Sie(Troubleshoot) Speicherlecks in Windows

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

1] Prozesse schließen und neu starten.

Wenn Sie sehen, dass ein unnötiger Prozess zu viel RAM beansprucht(RAM) , 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(Restart) wird das Speicherleckproblem nicht behoben. Ein bestimmter Prozess, der Fehler aufweist, um den PC zu verlangsamen, ist Runtime Broker . Versuchen Sie, ob das Deaktivieren allein funktioniert.

2] Speicherdiagnosetools

Windows-Speicherdiagnose

So greifen Sie auf das integrierte Speicherdiagnosetool(Memory Diagnostic Tool) für Windows zu:

  1. Speichern Sie alle wichtigen Arbeiten.
  2. Drücken Win + R , um das Ausführen-(Run) Fenster zu öffnen.
  3. Geben Sie den Befehl mdsched.exe im Ausführen(Run) - Fenster ein.
  4. Starten Sie den PC neu.
  5. Führen Sie nach einem Neustart einen einfachen Scan durch oder gehen Sie zu den „ Erweiterten(Advanced) “ Optionen wie „ Test Mix “ oder „ Pass Count “.
  6. Drücken Sie F10(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 neuesten Stand :

  1. Drücken Win + R und öffnen Sie das Ausführen-(Run) Fenster. Geben Sie devmgmt.msc ein(devmgmt.msc) und drücken Sie die Eingabetaste(Enter) . Sie gelangen zum Geräte-Manager(Device Manager) .
  2. Suchen Sie(Check) nach veralteten Treibern und aktualisieren Sie sie alle.
  3. Informationen zu Updates, die Sie möglicherweise verpasst haben, finden Sie unter Windows Update .

Das war einfach.

4] Leistung optimieren

Für optimale Leistung anpassen

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

  1. Klicken Sie mit der rechten Maustaste auf „ Dieser PC(This PC) “ und wählen Sie im linken Bereich „ Erweiterte(Advanced) “ Einstellungen.
  2. Gehen Sie auf der Registerkarte „ Erweitert “ zu „ (Advanced)Leistung(Performance) “ und dann zu „ Einstellungen(Settings) “.
  3. Aktivieren Sie „ Für optimale Leistung anpassen(Adjust for best performance) “ und klicken Sie auf „ OK “ .
  4. Starten(Restart) Sie neu und prüfen Sie, ob das Problem behoben ist.

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

5] Deaktivieren Sie Programme(Programs) , die beim Start ausgeführt werden(Startup)

Startup-Programme

Das Deaktivieren der problematischen Programme ist die einzige Möglichkeit, das Problem des Speicherlecks zu beseitigen. Gehen Sie zum Task-Manager und deaktivieren Sie das Störungsbeseitigungsprogramm. Wenn Sie nicht wissen, welche Programme die Probleme verursachen, tun Sie Folgendes:

  1. Gehen Sie zum „ Task-Manager “.
  2. Gehen Sie zu „ Start(Startup) “.
  3. Deaktivieren Sie die Startprogramme,(Disable the startup programs) die Sie nicht standardmäßig ausführen müssen.

6] Festplatte defragmentieren

Festplattendefragmentierung

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(This PC) “ oder „ Mein Computer(My Computer) “.
  2. Klicken Sie mit der rechten Maustaste(Right-Click) auf die Systemfestplatte (normalerweise Laufwerk C:).
  3. Gehen Sie zu „ Extras(Tools) “ unter „ Eigenschaften(Properties) “ und wählen Sie „ Optimieren(Optimize) “.
  4. Wählen Sie das zu defragmentierende Laufwerk und wählen Sie „ Analysieren(Analyze) “.

Starten Sie Ihren Computer nach der neuen Fragmentierung neu.

7] ClearPage-Datei beim Herunterfahren

Jetzt wird es kompliziert – aber keine Sorge. So löschen Sie die Auslagerungsdatei bei jedem Herunterfahren(clear the Page File at every shutdown) :

  • Geben Sie regedit(regedit) in die Suche ein, um den (Search)Registrierungseditor(Registry Editor) zu starten .
  • Geben Sie diesen Pfad ein:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Ändern Sie den Wert von ClearPageFileAtShutDown auf „1“.( ClearPageFileAtShutDown to ‘1’.)
  • Speichern Sie die Änderungen und starten(Restart) Sie das Gerät neu.

Damit sollte es gehen. Denken Sie daran, dass Ihr Herunterfahrvorgang etwas länger dauern wird.

9] Superfetch deaktivieren

Dieser Windows-Dienst(Windows Service) optimiert die Leistung, indem er die Startzeit minimiert. Damit kann Windows die (Windows)RAM- Nutzung verwalten . Das Leben(Life) nach dem Deaktivieren von Superfetch(Superfetch) ist nicht bequem, aber tun Sie es, wenn Sie müssen. Versuchen Sie es zumindest alleine, um das Problem einzugrenzen:

  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 zu „ Eigenschaften(Properties) “ zu gelangen.
  3. Wählen Sie „ Stopp(Stop) “.
  4. Deaktivieren(Disable) Sie auch 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 hat.

10] Auf Malware prüfen

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

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



About the author

Ich habe einen Hintergrund in Computertechnik und Informationstechnologie, der mir eine einzigartige Perspektive auf die Plattformen Windows 10 und 11 verschafft hat. Insbesondere bin ich sowohl mit der Windows 10 „Desktop Experience“ als auch mit dem Microsoft Edge-Browser erfahren. Meine Erfahrung mit diesen beiden Plattformen gibt mir ein tiefes Verständnis dafür, wie sie funktionieren, und mein Fachwissen in diesen Bereichen ermöglicht es mir, zuverlässige Ratschläge zu geben, wie sie verbessert werden können.



Related posts