Finn og fikse minnelekkasjer i Windows 10

En minnelekkasje er en feilplassering av ressurser i et dataprogram på grunn av feil minnetildeling. Det skjer når et RAM-sted som ikke er i bruk, ikke er utgitt. En minnelekkasje skal ikke forveksles med en romlekkasje, som refererer til et program som bruker mer RAM enn nødvendig. En minnelekkasje på et Windows 10/8/7 system sies å ha funnet sted når minnet bare ikke er tilgjengelig til tross for at det ikke er i bruk.

Minnelekkasjer i Windows 10

Før du begynner, bør du vite at minnelekkasje er et programvareproblem å feilsøke - for eksempel i Java, JavaScript, C / C ++, Windows osv. Det er ikke nødvendig å bytte RAM eller harddisk fysisk.

Minnelekkasje i Windows 10

Hvorfor er det dårlig?

Det er åpenbart at minnelekkasje er dårlig fordi det er en feil, en feil i systemet. Men la oss finne ut hvordan det påvirker systemet nøyaktig:

  1. Siden minnet ikke blir frigjort selv når det ikke er i bruk, resulterer det i minnetømming.
  2. Utmattelse av minnet resulterer i aldring av programvare.
  3. Redusert tilgjengelig minne fører til økt responstid og dårlig ytelse fra systemet.
  4. Uhaket minnelekkasje kan til slutt føre til at et program krasjer.

For å identifisere en minnelekkasje, må en programmerer ha tilgang til kildekoden til programmet.

Finne lekkasjen

For å løse et problem, må vi først identifisere det. De grunnleggende trinnene for å finne en minnelekkasje er:

  1. Bekreftelse : Bestemme om det har skjedd en lekkasje.
  2. Finne kjernemodus minnelekkasje : Finne en lekkasje forårsaket av en kjernemodus-driverkomponent.
  3. Finne minnelekkasje i brukermodus : Finne en lekkasje forårsaket av brukermodusdriver eller app.

Minnetildeling

Det er forskjellige moduser der applikasjoner tildeler RAM. Hvis plassen ikke frigjøres etter bruk, vil minnelekkasjen oppstå uavhengig av tildelingsmodus. Noen vanlige fordelingsmønstre er:

  1. HealAlloc-funksjon for allokering av heapminne. C / C ++ kjøretidsekvivalenter er malloc og nye.
  2. VirtualAlloc-funksjon for direkte tildeling fra OS.
  3. Kernel32 APIer for å holde kjerneminne for appen. Eksempel, CreateFile, CreateThread.
  4. User32 APIer og Gdi32 APIer.

Forebygge minnelekkasjer

Vi vet alle at forebygging er bedre enn kur, så her er noen måter å forhindre minnelekkasje.

Overvåkingsvaner

Minnelekkasjer i Windows 10

Du må holde øye med unormal RAM-bruk av individuelle programmer og applikasjoner. Du kan gå til Windows Task Manager ved å trykke CTRL + SHIFT + ESC og legge til kolonnene som håndtak, brukerobjekter, GDI-objekter, etc.

Dette vil hjelpe deg med å enkelt overvåke ressursbruk.

Microsoft-verktøy for å diagnostisere minnelekkasjer

Ulike verktøy diagnostiserer minnelekkasjer for forskjellige tildelingsmodi:

  1. Application Verifier diagnostiserer dykkelekkasjer.
  2. UMDH (en komponent i Windows feilsøkingsverktøy) diagnostiserer lekkasjer for individuelle prosesser ved å overvåke allokering av heapminne.
  3. Trace Capture for en grundig analyse av RAM-bruk.
  4. Xperf sporer også mønstre for tildeling av dynger.
  5. CRT Debug Heap sporer ikke bare haugetildelinger, men muliggjør også kodingspraksis for å minimere lekkasjer.
  6. JavaScript Memory Leak Detector feilsøker minnelekkasjer i koder.

Brukstips

  1. Bruk kjernehåndtak og slike andre smarte pekere for Win32-ressurser og dyngetildelinger.
  2. Få klasser for automatisk ressursadministrasjon for kjernetildelinger fra ATL-biblioteket. C ++ -standarden har auto_ptr for haugetildelinger .
  3. Innkapsl COM-pekere i “smarte pekere” ved hjelp av _com_ptr_t eller _bstr_t eller _variant_t .
  4. Overvåke .NET-koden for unormal minnebruk.
  5. Unngå flere utgangsstier for funksjoner for å la tildelinger frigjøres fra variabler i de fleste blokker ved slutten av en funksjon.
  6. Bruk bare unntak etter å ha frigjort alle tildelinger i _finally-blokken. Pakk all heap og håndter allokeringer i smarte pekere for å bruke C ++ unntak.
  7. Ring alltid PropVariantClear- funksjonen før du initialiserer på nytt eller kaster et GJELDENDE objekt.

Feilsøking av minnelekkasjer i Windows

Akkurat som de forskjellige måtene å forhindre minnelekkasjer på, er det forskjellige måter å stoppe minnelekkasjer på. Men før du begynner, husk å opprette et systemgjenopprettingspunkt først.

1] Lukk prosesser og start på nytt.

Hvis du ser at en unødvendig prosess tar opp for mye RAM, kan du avslutte prosessen i Oppgavebehandling. Du må starte enheten på nytt slik at den frigjorte plassen er tilgjengelig for bruk av andre prosesser. Uten et problem med omstart av minne, vil ikke problemet bli løst. En spesiell prosess som har feil for å bremse PC-en, er Runtime Broker. Prøv hvis deaktivering av det alene fungerer.

2] Memory Diagnostic Tools

Windows Memory Diagnostics

Slik får du tilgang til det innebygde diagnostiske verktøyet for minne for Windows:

  1. Lagre alt ditt viktige arbeid.
  2. Trykk på Win + R for å åpne Run- vinduet.
  3. Skriv inn kommandoen mdsched.exe i Kjør- vinduet.
  4. Start PCen på nytt.
  5. Etter en omstart, utfør en grunnleggende skanning eller gå etter alternativene ' Avansert ' som ' Testmiks ' eller ' Bestått antall '.
  6. Trykk på F10 for å starte testen.

Dette er fortsatt midlertidige løsninger.

3] Se etter driveroppdateringer

Oppdater driverprogramvaren

Utdaterte drivere forårsaker minnelekkasjer. Hold alle driverne oppdatert:

  1. Trykk på Win + R og åpne Run- vinduet. Skriv inn devmgmt.msc og trykk Enter. Det tar deg til Enhetsbehandling .
  2. Se etter utdaterte drivere og oppdater dem alle.
  3. For oppdateringer du kanskje har gått glipp av, sjekk i Windows Update.

Dette var enkelt.

4] Optimaliser ytelsen

Juster for best ytelse

Justering av Windows for ytelse styrer alt inkludert prosessorplanlegging og minnebruk for å stoppe minnelekkasjer. Følg disse trinnene:

  1. Høyreklikk på ' Denne PCen ' og velg ' Avanserte ' innstillinger i venstre rute.
  2. Under ' Avansert ' -fanen, gå til ' Ytelse ', etterfulgt av ' Innstillinger '.
  3. Merk av for " Juster for best ytelse " og klikk OK .
  4. Start på nytt og sjekk om problemet er løst.

Hvis denne enkle løsningen ikke fungerte, kan du prøve neste løsning.

5] Deaktiver programmer som kjører ved oppstart

Oppstartsprogrammer

Deaktivering av plagsomme programmer er den eneste måten å kvitte seg med minnelekkasjeproblemet. Gå til Oppgavebehandling og deaktiver feilsøkingsprogrammet. Hvis du ikke vet hvilke programmer som skaper problemer, gjør du dette:

  1. Gå til ' Oppgavebehandling '.
  2. Gå til ' Oppstart '.
  3. Deaktiver oppstartsprogrammene du ikke trenger å kjøre som standard.

6] Defrag harddisken

Diskdefragmentering

Selv om Windows 10 gjør dette for deg automatisk, må du kanskje defragmentere harddiskene av og til for å optimalisere ytelsen:

  1. Gå til ' Denne PCen ' eller ' Min datamaskin '.
  2. Høyreklikk systemets harddisk (vanligvis C: stasjon).
  3. Gå til ' Verktøy ' under ' Egenskaper ' og velg ' Optimaliser '.
  4. Velg stasjonen du vil defragmentere, og velg ' Analyser '.

Start datamaskinen på nytt etter den nye fragmenteringen.

7] ClearPage File ved avslutning

Det blir komplekst nå - men ikke bekymre deg. Slik fjerner du sidefilen ved hver avstengning:

  • Skriv regedit på Søk for å starte Registerredigering.
  • Skriv inn denne banen:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Endre verdien av ClearPageFileAtShutDown til '1'.
  • Lagre endringene og start enheten på nytt.

Dette burde gjøre det. Husk at avslutningsprosessen din vil ta litt mer tid.

9] Deaktiver Superfetch

Denne Windows-tjenesten optimaliserer ytelsen ved å minimere oppstartstiden. Det lar Windows administrere RAM-bruk. Livet etter deaktivering av Superfetch er ikke praktisk, men gjør det hvis du må. I det minste prøv dette alene for å isolere problemet:

  1. Søk på services.msc og gå til Services Manager.
  2. Se etter ' Superfetch ' og høyreklikk på den for å gå til ' Properties '.
  3. Velg ' Stopp '.
  4. Også ' Deaktiver ' tjenesten fra rullegardinmenyen.
  5. Start PCen på nytt og sjekk om ytelsen har blitt bedre.

Aktiver Superfetch hvis denne ikke fungerte.

10] Se etter skadelig programvare

Bruk en tredjeparts antivirusprogramvare eller Windows 10s interne Windows Defender for å skanne og eliminere skadelig programvare. Forsikre deg om at antivirusprogrammet er oppdatert for å støtte operativsystemet ditt, slik at det ikke blir årsaken til minnelekkasjen.

Hver løsning du måtte trenge for å finne eller forhindre minnelekkasjer, er akkurat her. Du kan lese mer om minnelekkasjer på MSDN og Microsoft.

Original text


Minnelekkasjer i Windows 10