Hitta och åtgärda minnesläckor i Windows 11/10
En minnesläcka(Memory Leak) är en felplacering av resurser i ett datorprogram på grund av felaktig minnesallokering. Det händer när en RAM- plats som inte används förblir osläppt. En minnesläcka ska inte förväxlas med en utrymmesläcka, som hänvisar till ett program som använder mer RAM än nödvändigt. En minnesläcka på ett Windows 11/10/8/7 system sägs ha skett när minnet bara inte är tillgängligt trots att det inte används.
Minnesläckor i Windows 11/10
Innan du börjar bör du veta att en minnesläcka(Memory) är ett programvaruproblem att felsöka – till exempel i Java , JavaScript , C/C++, Windows etc. Fysiskt byte av RAM eller hårddisk krävs inte.
Varför är det dåligt
Det är uppenbart att en minnesläcka är dålig eftersom det är en bugg, ett fel i systemet. Men låt oss ta reda på exakt hur det påverkar systemet:
- Eftersom minnet inte frigörs även när det inte används, resulterar det i att minnet töms.
- Utmattning av minnet leder till att programvaran åldras.
- Minskat tillgängligt minne leder till ökad svarstid och dålig prestanda av systemet.
- En okontrollerad minnesläcka kan så småningom leda till att en applikation kraschar.
För att identifiera en minnesläcka måste en programmerare ha tillgång till programmets källkod.
Lokalisera läckan
För att lösa ett problem måste vi först identifiera det. De grundläggande stegen för att lokalisera en minnesläcka är:
- Bekräftelse(Affirmation) : Avgör om en läcka har inträffat.
- Hitta minnesläcka i kärnläge(Finding Kernel-mode memory leak) : Lokalisera en läcka orsakad av en drivrutinskomponent i kärnläge.
- Hitta minnesläcka(Finding User-mode memory leak) i användarläge : Hitta en läcka orsakad av en drivrutin eller app i användarläge.
Minnesallokering
Det finns olika lägen där applikationer allokerar RAM . Om utrymme inte frigörs efter användning kommer minnesläckan att inträffa oavsett tilldelningssätt. Några vanliga tilldelningsmönster är:
- HealAlloc- funktion för heap-minnestilldelning. C/C++ runtime-ekvivalenterna är malloc och nya.
- VirtualAlloc- funktion för direkt tilldelning från OS.
- Kernel32 API:er(Kernel32 APIs) för att hålla kärnminne för appen. Exempel(Example) , CreateFile , CreateThread .
- User32 API:er och Gdi32 API:er.
Förhindra minnesläckor i Windows
Vi vet alla att förebyggande är bättre än att bota så här är några sätt att förhindra en minnesläcka.
Övervakningsvanor
Du måste hålla utkik efter onormal RAM -användning av enskilda program och applikationer. Du kan gå till Windows Task Manager genom att trycka på CTRL+SHIFT+ESC och lägga till kolumner som Handles , User Objects , GDI Objects , etc.
Detta hjälper dig att enkelt övervaka resursanvändning.
Läs(Read) : Vilka typer av minne finns i en dator?(What are the Types of Memory in a computer?)
Microsofts(Microsoft) verktyg för att diagnostisera minnesläckor
Olika verktyg diagnostiserar minnesläckor för olika allokeringslägen:
- Application Verifier diagnostiserar högläckor.
- UMDH (en komponent i Windows Debugging Tools ) diagnostiserar läckor för enskilda processer genom att övervaka heap-minnestilldelningar.
- Trace Capture för en grundlig analys av RAM -användning.
- Xperf spårar också heap-tilldelningsmönster.
- CRT Debug Heap spårar inte bara heap-tilldelningar utan möjliggör också kodningsmetoder för att minimera läckor.
- JavaScript Memory Leak Detector felsöker minnesläckor i koder.
Användningstips
- Använd kernel HANDLE s och andra smarta pekare för Win32- resurser och heap-tilldelningar.
- Få(Get) klasser för automatisk resurshantering för kärnallokering från ATL - biblioteket. C++-standarden har auto_ptr för heap-tilldelningar.
- Kapsla in COM(Encapsulate COM) -gränssnittspekare i "smarta pekare" med hjälp av _com_ptr_t eller _bstr_t eller _variant_t .
- Övervaka (Monitor).NET - koden för onormal minnesanvändning.
- Undvik(Avoid) flera utgångsvägar för funktioner för att låta tilldelningar befrias från variabler i de flesta block i slutet av en funktion.
- Använd(Use) endast inbyggda undantag efter att alla tilldelningar har frigjorts i blocket _finally . Slå(Wrap) in all heap och hantera allokering i smarta pekare för att använda C++ undantag.
- Anropa alltid PropVariantClear- funktionen innan du återinitierar eller kasserar ett PROPVARIANT- objekt.
Felsök(Troubleshoot) minnesläckor i Windows
Precis som de olika sätten att förhindra minnesläckor, finns det olika sätt att stoppa minnesläckor. Men innan du börjar, kom ihåg att skapa en systemåterställningspunkt först .
1] Stäng processer och starta om.
Om du ser att en onödig process tar upp för mycket RAM -minne kan du avsluta processen i Aktivitetshanteraren(Task Manager) . Du måste starta om enheten så att det frigjorda utrymmet är tillgängligt för användning av andra processer. Utan en omstart(Restart) minnesläcka kommer inte problemet att lösas. En speciell process som har buggar för att sakta ner datorn är Runtime Broker . Försök om det fungerar bara att inaktivera det.
2] Diagnostiska verktyg för minne
För att komma åt det inbyggda Memory Diagnostic Tool för Windows:
- Spara allt ditt viktiga arbete.
- Tryck på Win + R för att öppna fönstret Kör .(Run)
- Skriv kommandot mdsched.exe i fönstret Kör .(Run)
- Starta om datorn.
- Efter en omstart, utför en grundläggande skanning eller välj " Avancerat(Advanced) " alternativ som " Testmix " eller " Godkänt antal(Pass count) ".
- Tryck på F10 för att starta testet.
Dessa är fortfarande tillfälliga korrigeringar.
3] Sök efter drivrutinsuppdateringar
Föråldrade drivrutiner orsakar minnesläckor. Håll alla drivrutiner uppdaterade :
- Tryck på Win + R och öppna fönstret Kör . (Run)Skriv devmgmt.msc och tryck på Retur(Enter) . Det tar dig till Enhetshanteraren(Device Manager) .
- Sök(Check) efter föråldrade drivrutiner och uppdatera dem alla.
- För uppdateringar, du kanske har missat, kolla i Windows Update .
Det här var enkelt.
4] Optimera prestanda
Att justera Windows för prestanda kommer att hantera allt inklusive processorschemaläggning och minnesanvändning för att stoppa minnesläckor. Följ dessa steg:
- Högerklicka på ' Den här datorn(This PC) ' och välj ' Avancerade(Advanced) ' inställningar i den vänstra rutan.
- Under fliken " Avancerat(Advanced) ", gå till " Prestanda(Performance) " följt av " Inställningar(Settings) ".
- Markera " Justera för bästa prestanda(Adjust for best performance) " och klicka på OK .
- Starta om(Restart) och kontrollera om problemet är löst.
Om denna enkla lösning inte fungerade, prova nästa lösning.
5] Inaktivera program(Programs) som körs vid uppstart(Startup)
Att inaktivera de besvärliga programmen är det enda sättet att bli av med minnesläckageproblemet. Gå till Aktivitetshanteraren(Task Manager) och inaktivera felsökningsprogrammet. Om du inte vet vilka program som skapar problemet, gör så här:
- Gå till " Task Manager ".
- Gå till " Startup ".
- Inaktivera startprogram som(Disable the startup programs) du inte behöver köra som standard.
6] Defragmentera hårddisk
Även om Windows 10 gör detta åt dig automatiskt, kan du behöva defragmentera hårddiskarna ibland för att optimera prestandan:
- Gå till ' Den här datorn(This PC) ' eller ' Den här datorn(My Computer) '.
- Högerklicka(Right-Click) på systemets hårddisk (vanligtvis C:-enhet).
- Gå till ' Verktyg(Tools) ' under ' Egenskaper(Properties) ' och välj ' Optimera(Optimize) '.
- Välj den enhet som ska defragmenteras och välj " Analysera(Analyze) ".
Starta om datorn efter den nya fragmenteringen.
7] ClearPage-fil vid avstängning
Det börjar bli komplicerat nu – men oroa dig inte. Så här rensar du sidfilen vid varje avstängning(clear the Page File at every shutdown) :
- Skriv regedit på Sök(Search) för att starta registerredigeraren(Registry Editor) .
- Ange denna sökväg:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Ändra värdet på ClearPageFileAtShutDown till '1'.( ClearPageFileAtShutDown to ‘1’.)
- Spara ändringarna och starta(Restart) om enheten.
Det här borde göra det. Kom ihåg att din avstängningsprocessen kommer att ta lite längre tid.
9] Inaktivera Superfetch
Denna Windows-tjänst(Windows Service) optimerar prestandan genom att minimera uppstartstiden. Det låter Windows hantera RAM -användning. Livet(Life) efter att ha inaktiverat Superfetch är inte bekvämt men gör det om du måste. Försök åtminstone detta ensam för att isolera problemet:
- Sök services.msc och gå till Services Manager.
- Leta efter " Superfetch " och högerklicka på den för att gå till " Egenskaper(Properties) ".
- Välj ' Stopp(Stop) '.
- " Inaktivera(Disable) " också tjänsten från rullgardinsmenyn.
- Starta om datorn och kontrollera om prestandan har förbättrats.
Aktivera Superfetch om den här inte fungerade.
10] Sök efter skadlig programvara
Använd ett antivirusprogram från tredje part eller Windows 10:s interna Windows Defender för att skanna och eliminera skadlig programvara. Se(Make) till att antivirusprogrammet är uppdaterat för att stödja ditt operativsystem så att det inte blir orsaken till minnesläckan.
Varje lösning du någonsin kan behöva för att hitta eller förhindra minnesläckor finns här. Du kan läsa mer om minnesläckor på MSDN och Microsoft .
Related posts
Hur man öppnar och läser Small Memory Dump (dmp)-filer i Windows 11/10
Hur man kör Windows Memory Diagnostics Tool i Windows 11/10
Hur man ökar sidfilstorleken eller virtuellt minne i Windows 11/10
Hur man manuellt skapar en Crash Dump-fil i Windows 11/10
Explorer.exe Högt minne eller CPU-användning i Windows 11/10
HDMI-uppspelningsenhet visas inte i Windows 11/10
Bästa gratis schemaprogramvara för Windows 11/10
Hur man mäter reaktionstid i Windows 11/10
Justera din bildskärm för bättre skärmupplösning i Windows 11/10
Vad är Windows.edb-filen i Windows 11/10
Hur man kontrollerar processorcacheminnesstorlek i Windows 11/10
Hur man byter hårddiskar i Windows 11/10 med Hot Swap
Hur man lägger till Group Policy Editor till Windows 11/10 Home Edition
Vad är en PLS fil? Hur skapar man en PLS-fil i Windows 11/10?
PDF-text försvinner när du redigerar eller sparar fil i Windows 11/10
Hur man öppnar Systemegenskaper i Kontrollpanelen i Windows 11/10
Hur man fixar 100 % disk, hög CPU, hög minnesanvändning i Windows 11/10
Hur testar man webbkamera i Windows 11/10? Fungerar det?
Fixa Microsoft Edge High Memory Usage i Windows 11/10
Åtgärda Chrome hög CPU, minne eller diskanvändning i Windows 11/10