Find og ret hukommelseslækager i Windows 11/10

En hukommelseslækage(Memory Leak) er en fejlplacering af ressourcer i et computerprogram på grund af fejlagtig hukommelsesallokering. Det sker, når en RAM- placering, der ikke er i brug, forbliver ufrigivet. En hukommelseslæk skal ikke forveksles med en pladslæk, som henviser til et program, der bruger mere RAM end nødvendigt. En hukommelseslækage på et Windows 11/10/8/7 system siges at have fundet sted, når hukommelsen bare ikke er tilgængelig, selvom den ikke er i brug.

Hukommelseslækager i Windows 11/10

Før du begynder, bør du vide, at et hukommelseslæk(Memory) er et softwareproblem, der skal fejlfindes – for eksempel i Java , JavaScript , C/C++, Windows osv. Fysisk udskiftning af RAM eller harddisk er ikke påkrævet.

Hukommelseslækage i Windows 10

Hvorfor er det dårligt

Det er indlysende, at en hukommelseslækage er dårlig, fordi det er en fejl, en fejl i systemet. Men lad os finde ud af, hvordan det præcist påvirker systemet:

  1. Da hukommelsen ikke frigøres, selv når den ikke er i brug, resulterer det i hukommelsesudtømning.
  2. Udmattelse af hukommelsen resulterer i softwarealdring.
  3. Reduceret tilgængelig hukommelse fører til øget responstid og dårlig ydeevne af systemet.
  4. En ukontrolleret hukommelseslækage kan i sidste ende føre til nedbrud af en applikation.

For at identificere en hukommelseslækage skal en programmør have adgang til programmets kildekode.

Lokalisering af lækagen

For at løse et problem skal vi først identificere det. De grundlæggende trin til at lokalisere en hukommelseslækage er:

  1. Bekræftelse(Affirmation) : Bestemmelse af, om der er opstået en lækage.
  2. Finding af hukommelseslækage i kerneltilstand(Finding Kernel-mode memory leak) : Lokalisering af en lækage forårsaget af en driverkomponent i kerneltilstand.
  3. Find hukommelseslækage i brugertilstand(Finding User-mode memory leak) : Lokalisering af en lækage forårsaget af en driver eller app i brugertilstand.

Hukommelsestildeling

Der er forskellige tilstande, hvor applikationer allokerer RAM . Hvis der ikke frigøres plads efter brug, vil hukommelseslækagen opstå uanset tildelingsmåden. Nogle almindelige tildelingsmønstre er:

  1. HealAlloc funktion til heap memory allokering. C/C++ runtime-ækvivalenterne er malloc og nye.
  2. VirtualAlloc funktion til direkte allokering fra OS.
  3. Kernel32 API'er(Kernel32 APIs) til at opbevare kernehukommelse til appen. Eksempel(Example) , CreateFile , CreateThread .
  4. User32 API'er og Gdi32 API'er.

Undgå hukommelseslækager i Windows

Vi ved alle, at forebyggelse er bedre end helbredelse, så her er nogle måder at forhindre en hukommelseslækage på.

Overvågningsvaner

Hukommelseslækager i Windows 10

Du skal holde øje med unormalt RAM- forbrug af individuelle programmer og applikationer. Du kan gå til Windows Task Manager ved at trykke på CTRL+SHIFT+ESC og tilføje kolonner som Håndtag(Handles) , Brugerobjekter(User Objects) , GDI-objekter(GDI Objects) osv.

Dette vil hjælpe dig med nemt at overvåge ressourceforbrug.

Læs(Read) : Hvad er hukommelsestyperne i en computer?(What are the Types of Memory in a computer?)

Microsoft -værktøjer til at diagnosticere hukommelseslækager

Forskellige værktøjer diagnosticerer hukommelseslækager for forskellige allokeringstilstande:

  1. Application Verifier diagnosticerer heap-lækager.
  2. UMDH (en komponent i Windows Debugging Tools ) diagnosticerer lækager for individuelle processer ved at overvåge heap-hukommelsesallokeringer.
  3. Trace Capture til en grundig analyse af RAM- forbrug.
  4. Xperf sporer også heap-allokeringsmønstre.
  5. CRT Debug Heap sporer ikke kun heap-allokeringer, men muliggør også kodningspraksis for at minimere lækager.
  6. JavaScript Memory Leak Detector debugger hukommelseslækager i koder.

Brugstips

  1. Brug kernel HANDLE s og andre smarte pointere til Win32 - ressourcer og heap-allokeringer.
  2. (Get) klasser til automatisk ressourcestyring til kerneallokeringer fra ATL - biblioteket. C++-standarden har auto_ptr til heap-allokeringer.
  3. Indkapsl COM(Encapsulate COM) -grænsefladepointere i "smart pointers" ved hjælp af _com_ptr_t eller _bstr_t eller _variant_t .
  4. Overvåg (Monitor).NET - koden for unormalt hukommelsesforbrug.
  5. Undgå(Avoid) flere udgangsstier for funktioner for at lade allokeringer blive frigjort fra variabler i de fleste blokke ved slutningen af ​​en funktion.
  6. Brug(Use) kun indfødte undtagelser efter frigivelse af alle tildelinger i blokken _finally . Pak(Wrap) alle heap og håndtere allokeringer ind i smarte pointere for at bruge C++ undtagelser.
  7. Kald altid PropVariantClear- funktionen, før du geninitialiserer eller kasserer et PROPVARIANT- objekt.

Fejlfinding(Troubleshoot) af hukommelseslækager i Windows

Ligesom de forskellige måder at forhindre hukommelseslækager på, er der forskellige måder at stoppe hukommelseslækager på. Men før du begynder, skal du huske at oprette et systemgendannelsespunkt først .

1] Luk processer og genstart.

Hvis du ser, at en unødvendig proces optager for meget RAM , kan du afslutte processen i Task Manager . Du skal genstarte enheden, så den frigjorte plads er tilgængelig til brug for andre processer. Uden en genstart(Restart) hukommelseslækage vil problemet ikke blive løst. En særlig proces, der har fejl til at bremse pc'en, er Runtime Broker . Prøv om deaktivering alene virker.

2] Hukommelsesdiagnoseværktøjer

Windows Hukommelsesdiagnostik

Sådan får du adgang til det indbyggede Memory Diagnostic Tool til Windows:

  1. Gem alt dit vigtige arbejde.
  2. Tryk på Win + R for at åbne vinduet Kør .(Run)
  3. Indtast kommandoen mdsched.exe i vinduet Kør(Run) .
  4. Genstart pc'en.
  5. Efter en genstart skal du udføre en grundlæggende scanning eller gå efter ' Avanceret(Advanced) ' muligheder som ' Test mix ' eller ' Pass count '.
  6. Tryk på F10 for at starte testen.

Disse er stadig midlertidige rettelser.

3] Se efter driveropdateringer

Opdater driversoftware

Forældede drivere forårsager hukommelseslækager. Hold alle drivere opdateret :

  1. Tryk på Win + R og åbn vinduet Kør . (Run)Skriv devmgmt.msc og tryk på Enter . Det fører dig til Enhedshåndtering(Device Manager) .
  2. Se(Check) efter forældede drivere og opdater dem alle.
  3. For opdateringer, du måske er gået glip af, tjek i Windows Update .

Dette var enkelt.

4] Optimer ydeevnen

Juster for den bedste ydeevne

Justering af Windows til ydeevne vil styre alt inklusive processorplanlægning og hukommelsesbrug for at stoppe hukommelseslækager. Følg disse trin:

  1. Højreklik på ' Denne pc(This PC) ' og vælg ' Avancerede(Advanced) ' indstillinger i venstre rude.
  2. Under fanen ' Avanceret(Advanced) ' skal du gå til ' Ydelse(Performance) ', efterfulgt af ' Indstillinger(Settings) '.
  3. Marker ' Juster for bedste ydeevne(Adjust for best performance) ', og klik på OK .
  4. Genstart(Restart) og kontroller, om problemet er løst.

Hvis denne enkle løsning ikke virkede, så prøv den næste løsning.

5] Deaktiver programmer,(Programs) der kører ved opstart(Startup)

Opstartsprogrammer

Deaktivering af de besværlige programmer er den eneste måde at slippe af med problemet med hukommelseslækage. Gå til Task Manager og deaktiver fejlfindingsprogrammet. Hvis du ikke ved, hvilke programmer der skaber problemerne, skal du gøre dette:

  1. Gå til ' Task Manager '.
  2. Gå til ' Opstart(Startup) '.
  3. Deaktiver de opstartsprogrammer,(Disable the startup programs) du ikke behøver at køre som standard.

6] Defragmenter harddisk

Diskdefragmentering

Selvom Windows 10 gør dette for dig automatisk, skal du muligvis defragmentere harddiskene af og til for at optimere ydeevnen:

  1. Gå til ' Denne pc(This PC) ' eller ' Min computer(My Computer) '.
  2. Højreklik(Right-Click) på systemharddisken (normalt C:-drev).
  3. Gå til ' Værktøjer(Tools) ' under ' Egenskaber(Properties) ' og vælg ' Optimer(Optimize) '.
  4. Vælg det drev, der skal defragmenteres, og vælg ' Analyser(Analyze) '.

Genstart din computer efter den nye fragmentering.

7] ClearPage-fil ved nedlukning

Det bliver komplekst nu – men bare rolig. Sådan rydder du sidefilen ved hver nedlukning(clear the Page File at every shutdown) :

  • Skriv regeditSøg(Search) for at starte registreringseditoren(Registry Editor) .
  • Indtast denne sti:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Skift værdien af ​​ClearPageFileAtShutDown til '1'.( ClearPageFileAtShutDown to ‘1’.)
  • Gem ændringerne, og genstart(Restart) enheden.

Dette burde gøre det. Husk, at din nedlukningsproces vil tage lidt længere tid.

9] Deaktiver Superfetch

Denne Windows-tjeneste(Windows Service) optimerer ydeevnen ved at minimere opstartstiden. Det lader Windows administrere RAM- brug. Livet(Life) efter at have deaktiveret Superfetch er ikke praktisk, men gør det, hvis du skal. Prøv i det mindste dette alene for at isolere problemet:

  1. Søg services.msc og gå til Services Manager.
  2. Se efter ' Superfetch ' og højreklik på den for at gå til ' Egenskaber(Properties) '.
  3. Vælg ' Stop '.
  4. ' Deaktiver(Disable) ' også tjenesten fra rullemenuen.
  5. Genstart pc'en og kontroller, om ydeevnen er forbedret.

Aktiver Superfetch, hvis denne ikke virkede.

10] Tjek for malware

Brug en tredjeparts antivirussoftware eller Windows 10's interne Windows Defender til at scanne og fjerne malware. Sørg(Make) for, at antivirusprogrammet er opdateret til at understøtte dit OS, så det ikke ender med at blive årsagen til hukommelseslækagen.

Enhver løsning, du nogensinde har brug for for at finde eller forhindre hukommelseslækager, er lige her. Du kan læse mere om hukommelseslækager på MSDN og Microsoft .



About the author

Jeg er datamatiker med over 10 års erfaring med softwareudvikling og sikkerhed. Jeg har en stærk interesse i Firefox, Chrome og Xbox-spil. Især er jeg særligt interesseret i, hvordan jeg sikrer, at min kode er sikker og effektiv.



Related posts