Zoek en repareer geheugenlekken in Windows 11/10
Een geheugenlek(Memory Leak) is een verkeerde plaatsing van bronnen in een computerprogramma als gevolg van een foutieve geheugentoewijzing. Het gebeurt wanneer een RAM- locatie die niet in gebruik is, niet wordt vrijgegeven. Een geheugenlek moet niet worden verward met een ruimtelek, wat verwijst naar een programma dat meer RAM gebruikt dan nodig is. Een geheugenlek op een Windows 11/10/8/7 systeem zou hebben plaatsgevonden wanneer het geheugen gewoon niet toegankelijk is ondanks dat het niet in gebruik is.
Geheugenlekken in Windows 11/10
Voordat u begint, moet u weten dat een geheugenlek(Memory) een softwareprobleem is om te debuggen, bijvoorbeeld in Java , JavaScript , C/C++, Windows , enz. Het fysiek vervangen van RAM of harde schijf is niet vereist.
Waarom is het slecht
Het is duidelijk dat een geheugenlek slecht is, want het is een bug, een fout in het systeem. Maar laten we eens kijken hoe het het systeem precies beïnvloedt:
- Aangezien het geheugen niet wordt vrijgemaakt, zelfs wanneer het niet in gebruik is, leidt dit tot geheugenuitputting.
- Uitputting van het geheugen leidt tot veroudering van de software.
- Verminderd beschikbaar geheugen leidt tot een langere responstijd en slechte prestaties van het systeem.
- Een ongecontroleerd geheugenlek kan uiteindelijk leiden tot het crashen van een applicatie.
Om een geheugenlek te identificeren, moet een programmeur toegang hebben tot de broncode van het programma.
Het lek lokaliseren
Om een probleem op te lossen, moeten we het eerst identificeren. De basisstappen om een geheugenlek te lokaliseren zijn:
- Affirmatie(Affirmation) : Vaststellen of er een lek is opgetreden.
- Geheugenlek in de kernelmodus vinden(Finding Kernel-mode memory leak) : een lek opsporen dat wordt veroorzaakt door een component van een stuurprogramma in de kernelmodus.
- Geheugenlek in gebruikersmodus vinden(Finding User-mode memory leak) : een lek opsporen dat wordt veroorzaakt door een stuurprogramma of app in de gebruikersmodus.
Geheugentoewijzing
Er zijn verschillende modi waarin toepassingen RAM toewijzen . Als er na gebruik geen ruimte vrijkomt, zal het geheugenlek optreden, ongeacht de toewijzingsmodus. Enkele veelvoorkomende toewijzingspatronen zijn:
- HealAlloc- functie voor heap-geheugentoewijzing. De runtime-equivalenten van C/C++ zijn malloc en nieuw.
- VirtualAlloc- functie voor directe toewijzing van OS.
- Kernel32-API's om kernelgeheugen voor de app vast te houden. Voorbeeld(Example) , CreateFile , CreateThread .
- User32 API's en Gdi32 API's.
Voorkom geheugenlekken in Windows
We weten allemaal dat voorkomen beter is dan genezen, dus hier zijn enkele manieren om een geheugenlek te voorkomen.
gewoontes volgen
U moet letten op abnormaal RAM -gebruik door afzonderlijke programma's en toepassingen. U kunt naar Windows Taakbeheer(Windows Task Manager) gaan door op CTRL+SHIFT+ESC te drukken en de kolommen toe te voegen zoals Handles , User Objects , GDI Objects , etc.
Dit zal u helpen om het gebruik van hulpbronnen gemakkelijk te controleren.
Lezen(Read) : Wat zijn de soorten geheugen in een computer?(What are the Types of Memory in a computer?)
Microsoft -hulpprogramma's om geheugenlekken te diagnosticeren
Verschillende tools diagnosticeren geheugenlekken voor verschillende toewijzingsmodi:
- Application Verifier diagnosticeert heap-lekken.
- UMDH (een onderdeel van Windows Debugging Tools ) diagnosticeert lekken voor individuele processen door heap-geheugentoewijzingen te bewaken.
- Trace Capture voor een grondige analyse van het RAM - gebruik.
- Ook Xperf volgt heaptoewijzingspatronen.
- CRT Debug Heap houdt(CRT Debug Heap) niet alleen heaptoewijzingen bij, maar maakt ook codeerpraktijken mogelijk om lekken te minimaliseren.
- JavaScript Memory Leak Detector debugt geheugenlekken in codes.
Gebruikstips
- Gebruik kernel HANDLE 's en andere slimme aanwijzers voor Win32- bronnen en heaptoewijzingen.
- Haal(Get) klassen op voor automatisch resourcebeheer voor kerneltoewijzingen uit de ATL - bibliotheek. C++ standaard heeft auto_ptr voor heaptoewijzingen.
- Kapsuleer COM(Encapsulate COM) -interfaceaanwijzers in "slimme aanwijzers" met behulp van _com_ptr_t of _bstr_t of _variant_t .
- Controleer(Monitor) de .NET -code op abnormaal geheugengebruik.
- Vermijd(Avoid) meerdere exit-paden voor functies om toewijzingen aan het einde van een functie in de meeste blokken vrij te maken van variabelen.
- Gebruik(Use) alleen native uitzonderingen nadat alle toewijzingen in het blok _finally zijn vrijgemaakt(_finally) . Wikkel(Wrap) alle heap- en handle-toewijzingen in slimme aanwijzers om C++-uitzonderingen te gebruiken.
- Roep altijd de functie PropVariantClear aan voordat u een PROPVARIANT- object opnieuw initialiseert of verwijdert.
(Troubleshoot)Geheugenlekken in Windows oplossen
Net als de verschillende manieren om geheugenlekken te voorkomen, zijn er verschillende manieren om geheugenlekken te stoppen. Maar vergeet niet om eerst een systeemherstelpunt te maken voordat u begint .
1] Sluit processen en start opnieuw.
Als u ziet dat een onnodig proces te veel RAM in beslag neemt , kunt u het proces beëindigen in Taakbeheer(Task Manager) . U moet het apparaat opnieuw opstarten zodat de vrijgekomen ruimte beschikbaar is voor gebruik door andere processen. Zonder een Herstart(Restart) geheugenlek probleem zal niet worden opgelost. Een specifiek proces dat bugs bevat om de pc te vertragen, is Runtime Broker . Probeer of alleen dat uitschakelen werkt.
2] Diagnostische hulpmiddelen voor geheugen
Om toegang te krijgen tot de ingebouwde Memory Diagnostic Tool voor Windows:
- Bewaar al je belangrijke werk.
- Druk op Win + R om het venster Uitvoeren te openen.(Run)
- Typ de opdracht mdsched.exe in het venster Uitvoeren .(Run)
- Start de pc opnieuw op.
- Voer na een herstart een basisscan uit of ga voor de ' Geavanceerde(Advanced) ' opties zoals ' Testmix ' of ' Pass count '.
- Druk op F10 om de test te starten.
Dit zijn nog tijdelijke oplossingen.
3] Controleren op stuurprogramma-updates
Verouderde stuurprogramma's veroorzaken geheugenlekken. Houd alle stuurprogramma's up-to-date :
- Druk Win + R en open het venster Uitvoeren . (Run)Typ devmgmt.msc en druk op Enter . Het brengt je naar Apparaatbeheer(Device Manager) .
- Controleer(Check) op verouderde stuurprogramma's en werk ze allemaal bij.
- Voor updates die je misschien hebt gemist, check in Windows Update .
Dit was eenvoudig.
4] Prestaties optimaliseren
Door Windows aan te passen voor prestaties , wordt alles beheerd, inclusief processorplanning en geheugengebruik om geheugenlekken te stoppen. Volg deze stappen:
- Klik met de rechtermuisknop op ' Deze pc(This PC) ' en selecteer ' Geavanceerde(Advanced) ' instellingen in het linkerdeelvenster.
- Ga onder het tabblad ' Geavanceerd(Advanced) ' naar ' Prestaties(Performance) ', gevolgd door ' Instellingen(Settings) '.
- Vink ' Aanpassen voor beste prestaties(Adjust for best performance) ' aan en klik op OK .
- Start opnieuw(Restart) en controleer of het probleem is opgelost.
Als deze eenvoudige oplossing niet werkt, probeer dan de volgende oplossing.
5] Schakel programma's(Programs) uit die worden uitgevoerd bij het opstarten(Startup)
Het uitschakelen van de lastige programma's is de enige manier om van het geheugenlekprobleem af te komen. Ga naar Taakbeheer(Task Manager) en schakel het probleemprogramma uit. Als u niet weet welke programma's de problemen veroorzaken, doet u dit:
- Ga naar ' Taakbeheer(Task Manager) '.
- Ga naar ' Opstarten(Startup) '.
- Schakel de opstartprogramma's(Disable the startup programs) uit die u niet standaard hoeft uit te voeren.
6] Harde schijf defragmenteren
Hoewel Windows 10 dit automatisch voor u doet, moet u de harde schijven mogelijk af en toe defragmenteren om de prestaties te optimaliseren:
- Ga naar ' Deze pc(This PC) ' of ' Mijn computer(My Computer) '.
- Klik met de rechtermuisknop op(Right-Click) de harde schijf van het systeem (meestal C: schijf).
- Ga naar ' Extra(Tools) ' onder ' Eigenschappen(Properties) ' en selecteer ' Optimaliseren(Optimize) '.
- Selecteer de schijf die u wilt defragmenteren en selecteer ' Analyseren(Analyze) '.
Start uw computer opnieuw op na de nieuwe fragmentatie.
7] ClearPage-bestand bij afsluiten
Het wordt nu complex, maar maak je geen zorgen. Ga als volgt te werk om het paginabestand bij elke afsluiting(clear the Page File at every shutdown) te wissen :
- Typ regedit in Zoeken(Search) om de Register-editor(Registry Editor) te starten .
- Voer dit pad in:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Wijzig de waarde van ClearPageFileAtShutDown in '1'.( ClearPageFileAtShutDown to ‘1’.)
- Sla de wijzigingen op en start(Restart) het apparaat opnieuw op.
Dit zou het moeten doen. Houd er rekening mee dat uw afsluitproces iets meer tijd in beslag zal nemen.
9] Superfetch uitschakelen
Deze Windows-service optimaliseert de prestaties door de opstarttijd te minimaliseren. Hiermee kan Windows het (Windows)RAM- gebruik beheren . Leven(Life) na het uitschakelen van Superfetch is niet handig, maar doe het als het moet. Probeer dit in ieder geval alleen om het probleem te isoleren:
- Zoek services.msc en ga naar Services Manager.
- Zoek naar ' Superfetch ' en klik er met de rechtermuisknop op om naar ' Eigenschappen(Properties) ' te gaan.
- Selecteer ' Stop '.
- Schakel(Disable) de service ook uit in het vervolgkeuzemenu.
- Start de pc opnieuw op en controleer of de prestaties zijn verbeterd.
Schakel Superfetch in als deze niet werkte.
10] Controleer op malware
Gebruik antivirussoftware van derden of de interne Windows Defender van Windows 10 om malware te scannen en te verwijderen. Zorg(Make) ervoor dat de antivirus is bijgewerkt om uw besturingssysteem te ondersteunen, zodat dit niet de reden wordt voor het geheugenlek.
Elke oplossing die u ooit nodig zou kunnen hebben om geheugenlekken te vinden of te voorkomen, vindt u hier. U kunt meer lezen over geheugenlekken op MSDN en Microsoft .
Related posts
Hoe u Small Memory Dump-bestanden (dmp) kunt openen en lezen in Windows 11/10
Windows Memory Diagnostics Tool uitvoeren in Windows 11/10
Hoe de paginabestandsgrootte of virtueel geheugen te vergroten in Windows 11/10
Handmatig een Crash Dump-bestand maken in Windows 11/10
Explorer.exe Hoog geheugen- of CPU-gebruik in Windows 11/10
Hoe de standaard webcam op een Windows 11/10-computer te veranderen
Fix Microsoft Edge Hoog geheugengebruik in Windows 11/10
Wat is een PPS-bestand? Hoe PPS naar PDF converteren in Windows 11/10?
Schakel netwerkverbindingen in in moderne stand-by op Windows 11/10
Hoe de geheugengrootte van de processorcache te controleren in Windows 11/10
PDF-tekst verdwijnt bij het bewerken of opslaan van een bestand in Windows 11/10
Hoe het Disk Signature Collision-probleem in Windows 11/10 op te lossen?
Stel Notepad++ in als standaardeditor voor .xml-bestanden in Windows 11/10
De optie Vind mijn apparaat uitschakelen in Windows 11/10 Instellingen
Hoe het detailvenster in Verkenner te tonen in Windows 11/10
Hoe de reactietijd te meten in Windows 11/10
Tips en trucs voor Microsoft Edge-browser voor Windows 11/10
Toegewijde video-RAM vergroten in Windows 11/10
Hoe Groepsbeleid-editor toe te voegen aan Windows 11/10 Home Edition
De app Alarmen en klokken van Windows 11/10 gebruiken