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.

Minnesläcka i Windows 10

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:

  1. Eftersom minnet inte frigörs även när det inte används, resulterar det i att minnet töms.
  2. Utmattning av minnet leder till att programvaran åldras.
  3. Minskat tillgängligt minne leder till ökad svarstid och dålig prestanda av systemet.
  4. 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:

  1. Bekräftelse(Affirmation) : Avgör om en läcka har inträffat.
  2. Hitta minnesläcka i kärnläge(Finding Kernel-mode memory leak) : Lokalisera en läcka orsakad av en drivrutinskomponent i kärnläge.
  3. 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:

  1. HealAlloc- funktion för heap-minnestilldelning. C/C++ runtime-ekvivalenterna är malloc och nya.
  2. VirtualAlloc- funktion för direkt tilldelning från OS.
  3. Kernel32 API:er(Kernel32 APIs) för att hålla kärnminne för appen. Exempel(Example) , CreateFile , CreateThread .
  4. 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

Minnesläckor i Windows 10

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:

  1. Application Verifier diagnostiserar högläckor.
  2. UMDH (en komponent i Windows Debugging Tools ) diagnostiserar läckor för enskilda processer genom att övervaka heap-minnestilldelningar.
  3. Trace Capture för en grundlig analys av RAM -användning.
  4. Xperf spårar också heap-tilldelningsmönster.
  5. CRT Debug Heap spårar inte bara heap-tilldelningar utan möjliggör också kodningsmetoder för att minimera läckor.
  6. JavaScript Memory Leak Detector felsöker minnesläckor i koder.

Användningstips

  1. Använd kernel HANDLE s och andra smarta pekare för Win32- resurser och heap-tilldelningar.
  2. (Get) klasser för automatisk resurshantering för kärnallokering från ATL - biblioteket. C++-standarden har auto_ptr för heap-tilldelningar.
  3. Kapsla in COM(Encapsulate COM) -gränssnittspekare i "smarta pekare" med hjälp av _com_ptr_t eller _bstr_t eller _variant_t .
  4. Övervaka (Monitor).NET - koden för onormal minnesanvändning.
  5. 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.
  6. 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.
  7. 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

Windows minnesdiagnostik

För att komma åt det inbyggda Memory Diagnostic Tool för Windows:

  1. Spara allt ditt viktiga arbete.
  2. Tryck på Win + R för att öppna fönstret Kör .(Run)
  3. Skriv kommandot mdsched.exe i fönstret Kör .(Run)
  4. Starta om datorn.
  5. Efter en omstart, utför en grundläggande skanning eller välj " Avancerat(Advanced) " alternativ som " Testmix " eller " Godkänt antal(Pass count) ".
  6. Tryck på F10 för att starta testet.

Dessa är fortfarande tillfälliga korrigeringar.

3] Sök efter drivrutinsuppdateringar

Uppdatera drivrutinsprogramvara

Föråldrade drivrutiner orsakar minnesläckor. Håll alla drivrutiner uppdaterade :

  1. 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) .
  2. Sök(Check) efter föråldrade drivrutiner och uppdatera dem alla.
  3. För uppdateringar, du kanske har missat, kolla i Windows Update .

Det här var enkelt.

4] Optimera prestanda

Justera för bästa 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:

  1. Högerklicka på ' Den här datorn(This PC) ' och välj ' Avancerade(Advanced) ' inställningar i den vänstra rutan.
  2. Under fliken " Avancerat(Advanced) ", gå till " Prestanda(Performance) " följt av " Inställningar(Settings) ".
  3. Markera " Justera för bästa prestanda(Adjust for best performance) " och klicka på OK .
  4. 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)

Startprogram

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:

  1. Gå till " Task Manager ".
  2. Gå till " Startup ".
  3. Inaktivera startprogram som(Disable the startup programs) du inte behöver köra som standard.

6] Defragmentera hårddisk

Diskdefragmentering

Även om Windows 10 gör detta åt dig automatiskt, kan du behöva defragmentera hårddiskarna ibland för att optimera prestandan:

  1. Gå till ' Den här datorn(This PC) ' eller ' Den här datorn(My Computer) '.
  2. Högerklicka(Right-Click) på systemets hårddisk (vanligtvis C:-enhet).
  3. Gå till ' Verktyg(Tools) ' under ' Egenskaper(Properties) ' och välj ' Optimera(Optimize) '.
  4. 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 regeditSö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:

  1. Sök services.msc och gå till Services Manager.
  2. Leta efter " Superfetch " och högerklicka på den för att gå till " Egenskaper(Properties) ".
  3. Välj ' Stopp(Stop) '.
  4. " Inaktivera(Disable) " också tjänsten från rullgardinsmenyn.
  5. 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 .



About the author

Inom affärer och teknik är Windows 10 och Windows 11/10 mycket viktiga verktyg. De låter dig interagera med datorer enklare och säkrare än någonsin tidigare, samt kör kraftfulla men anpassningsbara appar utan några säkerhetsrisker. Dessa verktyg är också viktiga för företag som vill kunna utöka sin onlinenärvaro och nå nya kunder. På grund av detta skulle jag säga att mina kunskaper i Windows 10 och Windows 11/10 gör mig till en utmärkt kandidat för ett sådant jobb eller företag.



Related posts