Kontor

Finn og reparer minnelekkasjer i Windows 10/8/7

Introducing the Windows 10 October 2020 Update

Introducing the Windows 10 October 2020 Update

Innholdsfortegnelse:

Anonim

A Minnelekkasje er en feilplassering av ressurs i et dataprogram på grunn av feil minneallokering. Det skjer når en RAM-plassering som ikke er i bruk, forblir utelatt. En minnelekkasje må ikke forveksles med et 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 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 for å feilsøke - for eksempel i Java, JavaScript, C / C ++, Windows, etc. Fysisk utskifting av RAM eller harddisk er ikke nødvendig.

Hvorfor er det dårlig

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

  1. Siden minnet ikke frigjøres, selv om det ikke er i bruk, resulterer det i minneutarmning.
  2. Utmattelse av minnet resulterer i software aldring.
  3. Redusert tilgjengelig minne fører til økt responstid og dårlig ytelse av systemet.
  4. Ukontrollert minnelekkasje kan etter hvert føre til krasj av et program.

For å identifisere en hukommelselekkasje må en programmerer ha tilgang til kildekoden for programmet.

Plassering av lekkasjen

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

  1. Bekreftelse : Bestemme om det har oppstått lekkasje.
  2. Finne kjernemoduslekkasje : Finne en lekkasje forårsaket av en kjernemodusdriverkomponent.
  3. Finne lekkasje i brukermodus : Finne en lekkasje forårsaket av brukermodusdriver eller -app.

Minneallokering

Det finnes forskjellige moduser der programmer allokerer RAM. Hvis plassen ikke frigjøres etter bruk, vil minnelekkasjen oppstå uavhengig av modusen for tildeling. Noen vanlige allokeringsmønstre er:

  1. HealAlloc-funksjon for allokering av heapminne. C / C ++ runtime-ekvivalenter er malloc og nye.
  2. VirtualAlloc-funksjon for direkte allokering fra OS.
  3. Kernel32 APIer for å holde kjerneminnet for appen. Eksempel, CreateFile, CreateThread.
  4. Bruker32 APIer og Gdi32 APIer.

Forebygging av minnelekkasjer

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

Overvåkning vaner

Du må holde øye med unormal RAM-bruk ved hjelp av individuelle programmer og programmer. Du kan gå til Windows Oppgavebehandling ved å trykke på CTRL + SHIFT + ESC og legge til kolonnene som Håndter, Brukerobjekter, GDI-objekter, etc.

Dette vil hjelpe deg med å overvåke ressursbruk.

Microsoft-verktøy for å diagnostisere minnelekkasjer

Forskellige verktøy diagnostiserer hukommelsesslekkasjer for ulike tildelingsmoduser:

  1. Program Verifier diagnostiserer heap lekkasjer.
  2. UMDH (en komponent av Windows Debugging Tools) diagnostiserer lekkasjer for individuelle prosesser ved å overvåke heap minneallokeringer
  3. Trace Capture for en grundig analyse av RAM-bruk.
  4. Xperf sporer også heapallokeringsmønstre.
  5. CRT Debug Heap sporer ikke bare heapallokeringer, men lar også kodingspraksis minimere lekkasjer.
  6. JavaScript Memory Leak Detektor debugger minnelekkasjer i koder.

Brukstips

  1. Bruk kjernen HANDLE s og andre smarte pekere for Win32-ressurser og heapallokeringer.
  2. Få klasser for automatisk ressursstyring for kjerneallokeringer fra ATL-biblioteket. C ++-standarden har auto_ptr for heapallokeringer.
  3. Encapsulate COM-grensesnittpoengene i "smart pointers" ved hjelp av _com_ptr_t eller _bstr_t eller _variant_t .
  4. Overvåk.NET-koden for unormal minnebruk.
  5. Unngå flere utgangsstier for funksjoner som lar frigjøringer frigjøres fra variabler i de fleste blokker ved slutten av en funksjon.
  6. Bruk bare innfødte unntak etter frigjøring av alle tildelinger i _final blokk. Wrap all heap og håndter allokeringer i smarte pekere for å kunne bruke C ++ unntak.
  7. Kall alltid PropVariantClear -funksjonen før du gjenoppretter eller kasserer en PROPVARIANT-gjenstand.

Feilsøking av minnelekkasjer i Windows

På samme måte som de forskjellige måtene for å forhindre minnelekkasjer, finnes det ulike måter å stoppe minnelekkasjer.

1] Lukk prosesser og start på nytt.

Hvis du ser en unødvendig prosess, tar du 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 Restart minne lekkasje problemet ikke vil bli løst. En bestemt prosess som har bugs for å senke PCen er Runtime Broker. Prøv å deaktivere det som fungerer alene.

2] Minnediagnostiseringsverktøy

Å få tilgang til det innebygde minnediagnostiseringsverktøyet for Windows:

  1. Lagre alt ditt viktige arbeid.
  2. Trykk Vinn + R for å åpne vinduet Kjør . Skriv inn kommandoen
  3. mdsched.exe i vinduet Kjør . Start datamaskinen på nytt.
  4. Etter en start, utfør en grunnleggende skanning eller gå til alternativene
  5. Avansert som Testmiks `eller` Pass teller `. Trykk
  6. F10 for å starte testen. Disse er fremdeles midlertidige reparasjoner.

3] Se etter Driveroppdateringer

Utdaterte drivere forårsaker minnelekkasje. Hold alle drivere oppdatert:

Trykk

  1. Vinn + R og åpne vinduet Kjør . Skriv devmgmt.msc og trykk Enter. Enhetsbehandling . Sjekk etter utdaterte drivere og oppdater dem alle.
  2. For oppdateringer du kanskje har gått glipp av, sjekk inn Windows Update.
  3. Dette var enkelt.

4] Optimaliser ytelsen

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

  1. Høyreklikk på Denne PC og velg Avansert `innstillinger i venstre rute.
  2. Under Avansert Ytelse `, etterfulgt av` Innstillinger `.
  3. Velg` Juster for best ytelse `og klikk OK .
  4. Start på nytt og kontroller om problemet er løst.

Hvis denne enkle løsningen ikke fungerte, prøv den neste løsningen.

5] Deaktiver programmer som kjører ved oppstart

Deaktivere de plagsomme programmene er deaktivert 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

Selv om Windows 10 gjør dette for deg automatisk, må du kanskje defragtere harddiskene noen ganger for å optimalisere ytelsen:

  1. Gå til Denne PC `eller` Denne datamaskinen `.
  2. Høyreklikk systemharddisken (vanligvis C: stasjon).
  3. Gå til` > Verktøy `under` Egenskaper `og velg` Optimaliser `.
  4. Velg stasjonen for å defragmentere og velg` Analyser `.

Start datamaskinen på nytt etter den nye fragmenteringen.

7] ClearPage-fil ved nedleggelse

Det blir komplisert nå - men ikke bekymre deg. Slik fjerner du sidelfilen ved hver avslutning:

  1. Type regedit på Søk for å starte Registerredigering.
  2. Skriv inn denne banen: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  3. Endre verdien av ClearPageFileAtShutDown til `1`.
  4. Lagre endringene og Start enheten på nytt.

Dette burde gjøre det.

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å. Prøv i det minste å isolere problemet:

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

Aktiver Superfetch hvis dette ikke virket.

10] Sjekk etter skadelig programvare

Bruk en tredjeparts antivirusprogramvare eller Windows 10s interne Windows Defender til å skanne og eliminere skadelig programvare. Sørg for at antivirusprogrammet er oppdatert for å støtte operativsystemet, slik at det ikke ender opp til å bli årsaken til minnelekkasjen.

Alle løsninger som du kanskje trenger for å finne eller forhindre minnelekkasjer, er her. Du kan lese mer om minnelekkasjer på MSDN og Microsoft.