Minne

Så här hittar du och fixar minnesläckor i Windows 10

Så här hittar du och fixar minnesläckor i Windows 10

A Minnesförlust är en felplacering av resurser i ett datorprogram på grund av felaktig minnestilldelning. Det händer när en RAM-plats som inte används förblir utsläppt. Ett minnesläckage ska inte förväxlas med ett rymdläcka, vilket hänvisar till ett program som använder mer RAM än nödvändigt. Ett minnesläckage på ett Windows 10/8/7-system sägs ha ägt rum när minnet bara 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 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 ett minnesläckage är dåligt eftersom det är ett fel, ett fel i systemet. Men låt oss ta reda på hur exakt det påverkar systemet:

  1. Eftersom minnet inte frigörs även när det inte används resulterar det i minnesutarmning.
  2. Utmattning av minnet resulterar i åldrande av programvaran.
  3. Minskat tillgängligt minne leder till ökad svarstid och dålig prestanda från 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 hitta en minnesläcka är:

  1. Bekräftelse: Avgör om en läcka har inträffat.
  2. Hitta minnesläckage i kärnläge: Lokalisering av en läcka orsakad av en drivkomponent i kärnläget.
  3. Hitta minnesläckage i användarläge: Lokalisera en läcka orsakad av en drivrutin eller app för användarläge.

Minnesallokering

Det finns olika lägen där applikationer tilldelar RAM. Om utrymme inte frigörs efter användning kommer minnesläckan att inträffa oberoende av allokeringsläget. Några vanliga fördelningsmönster är:

  1. HealAlloc-funktion för allokering av heapminne. C / C ++ runtime-ekvivalenterna är malloc och nya.
  2. VirtualAlloc-funktion för direkt tilldelning från OS.
  3. Kernel32 API: er för att hålla kärnminnet för appen. Exempel, CreateFile, CreateThread.
  4. User32 API: er och Gdi32 API: er.

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 ett öga på onormal RAM-användning av enskilda program och applikationer. Du kan gå till Windows Aktivitetshanterare genom att trycka på CTRL + SKIFT + ESC och lägg till kolumnerna som handtag, användarobjekt, GDI-objekt osv.

Detta hjälper dig att enkelt övervaka resursanvändningen.

Läsa: Vilka typer av minne i en dator?

Microsofts verktyg för att diagnostisera minnesläckor

Olika verktyg diagnostiserar minnesläckor för olika allokeringslägen:

  1. Application Verifier diagnostiserar högläckage.
  2. UMDH (en del av Windows felsökningsverktyg) diagnostiserar läckor för enskilda processer genom att övervaka tilldelningen av heapminne.
  3. Trace Capture för en grundlig analys av RAM-användning.
  4. Xperf spårar också högtilldelningsmönster.
  5. CRT Debug Heap spårar inte bara högtilldelningar 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 kärna HANTERAs och andra smarta pekare för Win32-resurser och högtilldelningar.
  2. Få klasser för automatisk resurshantering för kärnallokeringar från ATL-biblioteket. C ++ -standarden har auto_ptr för högtilldelning.
  3. Kapsla in COM-gränssnittspekare i “smarta pekare” med hjälp av _com_ptr_t eller _bstr_t eller _variant_t.
  4. Övervaka .NET-kod för onormal minnesanvändning.
  5. Undvik flera utgångsvägar för funktioner så att allokeringar frigörs från variabler i de flesta block i slutet av en funktion.
  6. Använd endast inhemska undantag efter att alla tilldelningar har frigörts i _finally-blocket. Slå in all heap och hantera allokeringar i smarta pekare för att använda C ++ undantag.
  7. Ring alltid PropVariantClear funktion innan du återinitialiserar eller kasserar ett PROPVARIANT objekt.

Felsökning av minnesläckor i Windows

Precis som de olika sätten att förhindra minnesläckage 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 kan du avsluta processen i Aktivitetshanteraren. Du måste starta om enheten så att det frigörda utrymmet är tillgängligt för användning av andra processer. Utan en omstart av minnesläckaproblemet kommer inte att lösas. En särskild process som har buggar för att sakta ner datorn är Runtime Broker. Prova om att inaktivera det ensam fungerar.

2] Diagnosverktyg för minne

För att komma åt det inbyggda minnesdiagnostiska verktyget för Windows:

  1. Spara allt ditt viktiga arbete.
  2. Tryck Vinn + R för att öppna Springa fönster.
  3. Skriv kommandot mdsched.exe i Springa fönster.
  4. Starta om datorn.
  5. Efter en omstart, utför en grundläggande genomsökning eller gå till 'Avancerad"alternativ som"Testmix'eller'Antal pass''.
  6. Tryck 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:

  1. Tryck Vinn + R och öppna Springa fönster. Typ devmgmt.msc och tryck på Enter. Det tar dig till Enhetshanteraren.
  2. Sök efter föråldrade drivrutiner och uppdatera dem alla.
  3. För uppdateringar kanske du har missat, kolla in Windows Update.

Detta var enkelt.

4] Optimera prestanda

Justering av Windows för prestanda kommer att hantera allt inklusive schemaläggning av processorer och minnesanvändning för att stoppa minnesläckor. Följ dessa steg:

  1. Högerklicka på 'Den här datorn'och välj'Avanceradinställningar i den vänstra rutan.
  2. Under 'Avancerad'flik, gå till'Prestanda', följd av 'inställningar''.
  3. Kolla upp 'Justera för bästa prestandaoch klicka OK.
  4. Starta om och kontrollera om problemet är löst.

Om den här enkla lösningen inte fungerade kan du prova nästa lösning.

5] Inaktivera program som körs vid start

Att inaktivera de besvärliga programmen är det enda sättet att bli av med minnesläckageproblemet. Gå till Aktivitetshanteraren och inaktivera felsökningsprogrammet. Om du inte vet vilka program som skapar problemet gör du så här:

  1. Gå till 'Aktivitetshanteraren''.
  2. Gå till 'Börja''.
  3. Inaktivera startprogrammen som du inte behöver köra som standard.

6] Defrag hårddisk

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

  1. Gå till 'Den här datorn'eller'Min dator''.
  2. Högerklicka på systemets hårddisk (vanligtvis C: enhet).
  3. Gå till 'Verktyg' under 'Egenskaper'och välj'Optimera''.
  4. Välj den enhet som ska defragmenteras och välj 'Analysera''.

Starta om datorn efter den nya fragmenteringen.

7] ClearPage-fil vid avstängning

Det blir komplext nu - men oroa dig inte. Så här rensar du sidfilen vid varje avstängning:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management

Detta borde göra det. Kom ihåg att din avstängningsprocess tar lite mer tid.

9] Inaktivera Superfetch

Denna Windows-tjänst optimerar prestanda genom att minimera starttiden. Det låter Windows hantera RAM-användning. Livet efter att ha inaktiverat Superfetch är inte bekvämt men gör det om du måste. Försök åtminstone ensam för att isolera problemet:

  1. Sök tjänster.msc och gå till Services Manager.
  2. Leta efter 'Superhämtning'och högerklicka på den för att gå till'Egenskaper''.
  3. Välj 'Sluta''.
  4. Också 'Inaktiveratjä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 kod

Använd ett antivirusprogram från tredje part eller Windows 10: s interna Windows Defender för att skanna och eliminera skadlig kod. Se till att antivirusprogrammet uppdateras för att stödja ditt operativsystem så att det inte blir orsaken till minnesläckan.

Varje lösning du 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.

Hur man visar OSD-överlägg i helskärms Linux-appar och -spel
Att spela helskärmsspel eller använda appar i distraktionsfritt helskärmsläge kan avskärma dig från relevant systeminformation som syns i en panel ell...
Topp 5 spelinspelningskort
Vi har alla sett och älskat streaming av spel på YouTube. PewDiePie, Jakesepticye och Markiplier är bara några av de bästa spelarna som har tjänat mil...
Hur man utvecklar ett spel på Linux
För ett decennium sedan skulle inte många Linux-användare förutsäga att deras favoritoperativsystem en dag skulle vara en populär spelplattform för ko...