Hukommelse

Hvordan finne og fikse minnelekkasjer i Windows 10

Hvordan finne og fikse minnelekkasjer i Windows 10

EN Hukommelsestap 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 må 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.

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. En ukontrollert 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 oppstått 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 en brukermodusdriver eller app.

Minnetildeling

Det er forskjellige moduser der applikasjoner tildeler RAM. Hvis ikke plass 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 på.

Overvåkingsvaner

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

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

Lese: Hva er minnetyper på en datamaskin?

Microsoft-verktøy for å diagnostisere minnelekkasjer

Ulike verktøy diagnostiserer minnelekkasjer for forskjellige tildelingsmoduser:

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

Brukstips

  1. Bruk kjernen HÅNDTAKs og andre smarte pekere for Win32-ressurser og dyngetildelinger.
  2. Få kurs for automatisk ressursadministrasjon for kjernetildelinger fra ATL-biblioteket. C ++ standard har auto_ptr for haugetildelinger.
  3. Innkapsling av COM-grensesnittpekere i "smarte pekere" ved hjelp av _com_ptr_t eller _bstr_t eller _variant_t.
  4. Overvåke .NET-kode 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 å kunne bruke C ++ unntak.
  7. Ring alltid PropVariantClear funksjonen før du initialiserer på nytt eller kaster et GJENNOMGÅENDE 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 å starte minnet på nytt vil ikke bli løst. En bestemt prosess som har feil for å bremse PCen, er Runtime Broker. Prøv om deaktivering av det alene fungerer.

2] Memory Diagnostic Tools

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

  1. Lagre alt ditt viktige arbeid.
  2. trykk Vinn + R å åpne Løpe vindu.
  3. Skriv inn kommandoen mdsched.exe i Løpe vindu.
  4. Start PCen på nytt.
  5. Etter en omstart, utfør en grunnleggende skanning eller gå til 'Avansert'alternativer som'Testmiks'eller'Bestått antall'.
  6. trykk F10 for å starte testen.

Dette er fortsatt midlertidige løsninger.

3] Se etter driveroppdateringer

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

  1. trykk Vinn + R og åpne Løpe vindu. Type devmgmt.msc og trykk Enter. Det tar deg til Enhetsbehandling.
  2. Se etter utdaterte drivere og oppdater dem alle.
  3. For oppdateringer kan du ha gått glipp av, sjekk i Windows Update.

Dette var enkelt.

4] Optimaliser ytelsen

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

  1. Høyreklikk på 'Denne PC-en'og velg'Avansertinnstillinger i venstre rute.
  2. Under 'Avansert'fane, gå til'Opptreden', etterfulgt av 'Innstillinger'.
  3. Sjekk 'Juster for best ytelseog 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

Deaktivering av plagsomme programmer er den eneste måten å bli kvitt 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

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 PC-en'eller'Datamaskinen min'.
  2. Høyreklikk systemharddisken (vanligvis C: stasjon).
  3. Gå til 'Verktøy'under'Eiendommer'og velg'Optimaliser'.
  4. Velg stasjonen du vil defragmentere, og velg 'Analysere'.

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:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management

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 tjenester.msc og gå til Services Manager.
  2. Se etter 'Superhentingog høyreklikk på den for å gå til 'Eiendommer'.
  3. Å velge 'Stoppe'.
  4. Også 'Deaktivertjenesten 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.

Mus Legg til musebevegelser i Windows 10 ved hjelp av disse gratisverktøyene
Legg til musebevegelser i Windows 10 ved hjelp av disse gratisverktøyene
De siste årene har datamaskiner og operativsystemer utviklet seg sterkt. Det var en tid da brukere måtte bruke kommandoer for å navigere gjennom filad...
Mus Kontroller og administrer musebevegelser mellom flere skjermer i Windows 10
Kontroller og administrer musebevegelser mellom flere skjermer i Windows 10
Dual Display Mouse Manager lar deg kontrollere og konfigurere musebevegelse mellom flere skjermer, ved å bremse bevegelsene nær grensen. Windows 10/8,...
Mus WinMouse lar deg tilpasse og forbedre musemarkørenes bevegelse på Windows PC
WinMouse lar deg tilpasse og forbedre musemarkørenes bevegelse på Windows PC
Hvis du vil forbedre standardfunksjonene til musepekeren, bruk freeware WinMouse. Det legger til flere funksjoner som hjelper deg å få mest mulig ut a...