Så här hittar du och fixar minneläckor i Windows 10/8/7
en Minnesförlust är en felplacering av resurs i ett datorprogram på grund av felaktig minnesallokering. Det händer när en RAM-plats som inte används fortsätter att släppas ut. Ett minnesläckage får inte förväxlas med en rymdläcka, vilket refererar till ett program som använder mer RAM än nödvändigt. En minnesläcka på ett Windows 10/8/7-system sägs ha ägt rum när minnet inte är tillgängligt, trots att det inte används.
Minnesläckor i Windows 10
Innan du börjar bör du veta att minnesläckage är en mjukvaruproblem att felsöka - till exempel i Java, JavaScript, C / C ++, Windows, etc. Det är inte nödvändigt att byta ut RAM eller hårddisk..
Varför är det dåligt
Det är uppenbart att en minnesläcka är dålig eftersom det är ett fel, ett fel i systemet. Men låt oss ta reda på hur exakt det påverkar systemet:
- Eftersom minnet inte frigörs även när det inte används, resulterar det i minnesutarmning.
- Utmattning av minnet resulterar i programvara åldrande.
- Minskat tillgängligt minne leder till ökad svarstid och dålig prestanda av systemet.
- Okontrollerat minne läckage kan så småningom leda till krasch av en ansökan.
För att identifiera en minnesläcka behöver en programmerare ha tillgång till källkoden för programmet.
Lokalisering av läckaget
För att lösa ett problem måste vi identifiera det först. De grundläggande stegen för att lokalisera ett minne är:
- Bekräftelse: Bestämmer om en läcka har inträffat.
- Hitta läckage för kärnläge-minnet: Att lokalisera en läcka som orsakas av en komponent med kärnläge.
- Hitta läget läget för användarläge: Lokalisering av läckage orsakad av användarläge eller app.
Minnesallokering
Det finns olika lägen där applikationer allokerar RAM. Om utrymmet inte frigörs efter användning kommer minnesläckan att uppstå oberoende av fördelningsförhållandet. Några vanliga fördelningsmönster är:
- HealAlloc-funktionen för tilldelning av heapminne. C / C ++ runtimeekvivalenterna är malloc och nya.
- VirtualAlloc funktion för direkt tilldelning från OS.
- Kernel32 API: er för att hålla kärnminne för appen. Exempel, CreateFile, CreateThread.
- User32 API och Gdi32 API.
Förhindra minnesläckor
Vi vet alla att förebyggande är bättre än botemedel, så här är några sätt att förhindra minnesläckage.
Övervakningsvanor
Du måste hålla koll på unormal RAM-användning av enskilda program och applikationer. Du kan gå till Windows Task Manager genom att trycka på CTRL + Skift + Esc och lägg till kolumnerna som Handtag, Användarobjekt, GDI-objekt, etc..
Detta hjälper dig att enkelt övervaka resursanvändningen.
Microsoft verktyg för att diagnostisera minne läckor
Olika verktyg diagnostiserar minnesläckor för olika fördelningsmetoder:
- Ansökningsverifieraren diagnostiserar hålläckor.
- UMDH (en komponent av Windows Debugging Tools) diagnostiserar läckor för enskilda processer genom att övervaka heapminneallokeringar.
- Trace Capture för en grundlig analys av RAM-användning.
- Xperf spårar också överföringsmönstren.
- CRT Debug Heap spårar inte bara heaptilldelningar utan möjliggör också kodningspraxis för att minimera läckage.
- JavaScript Memory Leak Detector debugger minne läcker i koder.
Användningstips
- Använd kärna HANTERAs och andra smarta tips för Win32-resurser och heaptilldelningar.
- Hämta klasser för automatisk resurshantering för kärnanslutningar från ATL-biblioteket. C ++-standarden har auto_ptr för heaptilldelningar.
- Inkapslera COM-gränssnittspekare inom "smarta pekare" med hjälp av _com_ptr_t eller _bstr_t eller _variant_t.
- Övervaka .NET-koden för onormal minnesanvändning.
- Undvik flera utgångsbanor för funktioner som låter anslagen befrias från variabler i de flesta block vid slutet av en funktion.
- Använd endast inhemska undantag efter att ha befriat alla anslag i _finalt block. Wrap all heap och hantera tilldelningar i smarta pekare för att kunna använda C ++-undantag.
- Ring alltid till PropVariantClear funktionen innan du initialiserar eller kasserar ett PROPVARIANT-objekt.
Felsökning av läckage i Windows
Precis som de olika sätten att förhindra minnesläckor finns det olika sätt att stoppa minnesläckor.
1] Stäng processer och starta om.
Om du ser en onödig process tar upp för mycket RAM, kan du avsluta processen i Aktivitetshanteraren. Du måste starta om enheten så att det frigjorda rummet är tillgängligt för andra processer. Utan ett omstart minne läckage problem kommer inte att lösas. En särskild process som har buggar för att sakta ner datorn är Runtime Broker. Prova om inaktivera det som ensam fungerar.
2] Minnesdiagnostiska verktyg
Så här öppnar du det inbyggda minnesdiagnostiska verktyget för Windows:
- Spara allt ditt viktiga arbete.
- Tryck Vinn + R att öppna Springa fönster.
- Skriv kommandot mdsched.exe i Springa fönster.
- Starta om datorn.
- Efter en omstart, utför en grundskanning eller gå till "Avancerad"alternativ som"Testblandning"eller"Passräkning'.
- Tryck F10 att starta testet.
Dessa är fortfarande tillfälliga korrigeringar.
3] Kontrollera efter drivrutinsuppdateringarFöråldrade drivrutiner orsakar läckage i minnet. Håll alla drivrutiner uppdaterade:
- Tryck Vinn + R och öppna Springa fönster. Typ devmgmt.msc och tryck på Enter. Det tar dig till Enhetshanteraren.
- Kolla efter föråldrade drivrutiner och uppdatera dem alla.
- För uppdateringar som du kanske har missat, kolla in Windows Update.
Detta var enkelt.
4] Optimera prestanda
Justering av Windows för prestanda kommer att hantera allt inklusive processorplanering och minnesanvändning för att stoppa minneläckage. Följ dessa steg:
- Högerklicka på 'Den här datorn'och välj'Avancerad'inställningar i vänstra rutan.
- Under 'Avancerad"fliken, gå till"Prestanda', följd av 'inställningar'.
- Kontrollera 'Justera för bästa prestanda'och klicka ok.
- Starta om och kontrollera om problemet är löst.
Om den här enkla lösningen inte fungerade, prova nästa lösning.
5] Inaktivera program som körs vid uppstart
Att inaktivera de besvärliga programmen är det enda sättet att bli av med läckageproblemet. Gå till Aktivitetshanteraren och inaktivera programmet för problemlösning. Om du inte vet vilka program som skapar besväret gör du så här:
- Gå till 'Aktivitetshanteraren'.
- Gå till 'Börja'.
- Inaktivera startprogrammen som du inte behöver köra som standard.
6] Defrag Hard Drive
Även om Windows 10 gör det här automatiskt för dig, kan du behöva defragera hårddiskarna ibland för att optimera prestanda:
- Gå till 'Den här datorn"eller"Min dator'.
- Högerklicka på systemets hårddisk (vanligtvis C: drive).
- Gå till 'Verktyg' under 'Egenskaper'och välj'Optimera'.
- Välj enhet för att defragera och välj "Analysera'.
Starta om datorn efter den nya fragmenteringen.
7] ClearPage-fil vid avstängning
Det blir komplicerat nu - men oroa dig inte. Så här rensar du sidfilen vid varje avstängning:
- Typ regedit på Sök för att starta registret.
- Ange den här sökvägen: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Ändra värdet på ClearPageFileAtShutDown till '1'.
- Spara ändringarna och starta om enheten.
Detta borde göra det.
9] Inaktivera Superfetch
Denna Windows-tjänst optimerar prestanda genom att minimera starttiden. Det låter Windows hantera RAM-användning. Livet efter inaktiverande Superfetch är inte praktiskt men gör det om du måste. Åtminstone försök här ensam att isolera problemet:
- Sök services.msc och gå till Services Manager.
- Leta efter 'SuperFetch'och högerklicka på det för att gå till'Egenskaper'.
- Välj 'Sluta'.
- Också 'inaktivera"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] Kontrollera efter skadlig kod
Använd en tredje parts antivirusprogram eller Windows 10: s inbyggda Windows Defender för att skanna och eliminera skadlig kod. Se till att antivirusprogrammet är uppdaterat för att stödja ditt operativsystem så att det inte blir orsaken till minnesläckaget.
Varje lösning som du kan behöva hitta eller förhindra minne läckage är här. Du kan läsa mer om minnesläckor på MSDN och Microsoft.