Kontor

Hitta och åtgärda minneläckor i Windows 10/8/7

Free Windows XP Mode on Windows 10

Free Windows XP Mode on Windows 10

Innehållsförteckning:

Anonim

A Minneläckage är en felplacering av resursen i ett datorprogram på grund av felaktig minnesallokering. Det händer när en RAM-plats som inte används förbli oförlåtna. En minnesläcka får inte förväxlas med en rymdläcka, som 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.

Minneläckor i Windows 10

Innan du börjar bör du veta att Minneskickning ä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 ett minne läcka är dåligt eftersom det är en bugg, en 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 programvara åldrande.
  3. Minskat tillgängligt minne leder till ökad responstid och dålig prestanda av systemet.
  4. Ockontrollerad minneläckage kan så småningom leda till krasch av en applikation.

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. Grundläggande åtgärder för att hitta en minnesläcka är:

  1. Bekräftelse : Bestämma om läckage har inträffat.
  2. Hitta läckage för kärnläge-minnet : Att hitta en läcka som orsakats av en kärnlägesdrivarkomponent.
  3. Hitta läget läget för användarläge : Att hitta en läcka som orsakats av drivrutinen för användarläge eller app.

Minnesallokering

Det finns olika lägen i vilka applikationer allokerar RAM. Om utrymmet inte frigörs efter användning kommer minnesläckaget att uppstå oberoende av fördelningsförhållandet. Några vanliga allokeringsmönster är:

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

Förhindra minnesläckor

Vi vet alla att förebyggande är bättre än härdning, så här är några sätt att förhindra minnesläckage.

Övervakningsvanor

Du behöver 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 + SHIFT + ESC och lägga till kolumnerna som Handtag, Användarobjekt, GDI-objekt etc.

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

Microsoft-verktyg för att diagnostisera minnesläckor

Diverse verktyg diagnostiserar minnesläckor för olika tilldelningsmetoder:

  1. Program Verifier diagnostiserar hålläckor.
  2. UMDH (en komponent i Windows Debugging Tools) diagnostiserar läckor för enskilda processer genom att övervaka heapminneallokeringar
  3. Trace Capture för en noggrann analys av RAM-användningen.
  4. Xperf spårar också överföringsmönstren.
  5. CRT Debug Heap spårar inte bara heaptilldelningar utan möjliggör också kodningspraxis för att minimera läckage.
  6. JavaScript Memory Leak Detektor debuggar minnesläckor i koder.

Användningstips

  1. Använd kärna HANDLE s och andra smarta tips för Win32-resurser och heaptilldelningar.
  2. Få klasser för automatisk resurshantering för kärnfördelningar från ATL-biblioteket. C ++-standarden har auto_ptr för heaptilldelningar.
  3. Encapsulate COM-gränssnittspekare inom "smart pointers" med hjälp av _com_ptr_t eller _bstr_t eller _variant_t .
  4. Övervaka.NET-koden för onormal minnesanvändning.
  5. Undvik flera utgångsbanor för att låta anslag befrias från variabler i de flesta block vid slutet av en funktion.
  6. Använd endast inbyggda undantag efter att alla befrielser har frigjorts i _finalt block. Wrap all heap och hantera tilldelningar i smarta pekare för att kunna använda C ++-undantag.
  7. Felsökning av minnesläckor i Windows Precis som de olika sätten att förhindra minnesläckor finns det olika sätt att stoppa minnesläckor.

Funktionen

PropVariantClear

innan du påbörjar eller kasserar ett PROPVARIANT-objekt.

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 problemet kommer inte att lösas. En viss process som har buggar för att sakta ner datorn är Runtime Broker.

2) Minnesdiagnostiska verktyg

  1. För att komma åt det inbyggda minnesdiagnostikverktyget för Windows:
  2. Spara alla dina viktiga arbeten. Tryck Vinn + R för att öppna fönstret Kör
  3. . Skriv kommandot mdsched.exe i fönstret Kör
  4. .
  5. Starta om datorn. Efter en starta om, utföra en grundläggande skanning eller gå till alternativen Avancerad som " Testmix " eller " Passräkning
  6. ". Tryck F10

för att starta testet.

Dessa är fortfarande temporära korrigeringar.

3] Kontrollera efter drivrutinsuppdateringar

  1. Föråldrade drivrutiner orsakar läckage i minnet. Håll alla drivrutiner uppdaterade: Tryck på Vinn + R och öppna fönstret Kör . Skriv devmgmt.msc och tryck på Enter. Det går till Enhetshanteraren
  2. .
  3. Kolla efter föråldrade drivrutiner och uppdatera dem alla.

För uppdateringar som du kanske har missat, kolla in Windows Update.

Det här var enkelt.

4] Optimera prestanda

  1. Justera 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
  2. `inställningar i den vänstra rutan. Under` Avancerad ` Prestanda ` följt av ` Inställningar
  3. `. Kontrollera ` Justera för bästa prestanda ` och klicka på OK
  4. .

Starta om och kontrollera om problemet är löst.

Om den här enkla lösningen inte fungerade, försök med nästa lösning.

5] Inaktivera program som körs vid uppstart

  1. Inaktivera de besvärliga programmen är Det enda sättet att bli av med läckageproblemet. Gå till Aktivitetshanteraren och inaktivera problemlösningsprogrammet. Om du inte vet vilka program som skapar problem, gör så här: Gå till " Aktivitetshanteraren
  2. ". Gå till " Startup
  3. ".

Inaktivera startprogrammen som du inte behöver köra som standard.

6] Defrag hårddisken

  1. Även om Windows 10 gör det här automatiskt, kan du behöva defragera hårddiskarna ibland för att optimera prestanda: Gå till " Den här datorn " eller " Den här datorn
  2. ".
  3. Högerklicka på hårddisken (vanligtvis C: enhet). Gå till " > Verktyg `under` Egenskaper `och välj` Optimera
  4. `. Välj enhet för att defragera och välj Analysera

`.

Starta om datorn efter den nya fragmenteringen.

7] ClearPage-fil vid avstängning

  1. Det blir komplicerat nu - men oroa dig inte. Så här rensar du sidfilen vid varje avstängning: Typ regedit
  2. på Sök för att starta registret. Ange den här sökvägen:
  3. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management Ändra värdet av
  4. ClearPageFileAtShutDown till `1`.

Spara ändringarna och starta om enheten.

Detta borde göra det.

9] Inaktivera Superfetch

  1. 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 för att isolera problemet: Sök services.msc
  2. och gå till Services Manager. Leta efter Superfetch `och högerklicka på den för att gå Egenskaper
  3. `. Välj` Stopp
  4. `. Också` Inaktivera
  5. `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 om skadlig kod

Använd en tredje parts antivirusprogram eller Windows 10: s inbyggda Windows Defender för att skanna och eliminera skadlig programvara. Se till att antivirusprogrammet är uppdaterat för att stödja ditt operativsystem så att det inte blir orsaken till minnesläckaget.