Find og rett hukommelseslækage i Windows 10

En hukommelseslækage er en forkert placering af ressourcen i et computerprogram på grund af defekt hukommelsestildeling. Det sker, når en RAM-placering, der ikke er i brug, forbliver frigivet. En hukommelseslækage må ikke forveksles med en pladslækage, der refererer til et program, der bruger mere RAM end nødvendigt. En hukommelseslækage på et Windows 10/8/7 system siges at have fundet sted, når hukommelsen bare ikke er tilgængelig på trods af at den ikke er i brug.

Hukommelseslækage i Windows 10

Inden du begynder, skal du vide, at hukommelseslækage er et softwareproblem, der skal fejles - for eksempel i Java, JavaScript, C / C ++, Windows osv. Det er ikke nødvendigt at udskifte RAM eller harddisk fysisk.

Hukommelseslækage i Windows 10

Hvorfor er det dårligt?

Det er tydeligt, at en hukommelseslækage er dårlig, fordi det er en fejl, en fejl i systemet. Men lad os finde ud af, hvordan det nøjagtigt påvirker systemet:

  1. Da hukommelsen ikke frigøres, selv når den ikke er i brug, resulterer den i udtømning af hukommelsen.
  2. Udmattelse af hukommelsen resulterer i ældning af software.
  3. Reduceret tilgængelig hukommelse fører til øget responstid og dårlig ydelse fra systemet.
  4. 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.

Find lækagen

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

  1. Bekræftelse : Bestemmelse af, om der er sket en lækage.
  2. Find hukommelseslækage i kernetilstand: Find en lækage forårsaget af en komponent i kernetilstandsdriveren.
  3. Findning af hukommelseslækage i brugertilstand: Lokalisering af en lækage forårsaget af brugertilstandsdriver eller app.

Hukommelsestildeling

Der er forskellige tilstande, hvor applikationer tildeler RAM. Hvis pladsen ikke frigøres efter brug, vil hukommelseslækagen opstå uanset tildelingsmetoden. Nogle almindelige fordelingsmønstre er:

  1. HealAlloc-funktion til allokering af bunkehukommelse. C / C ++ runtime-ækvivalenter er malloc og nye.
  2. VirtualAlloc-funktion til direkte tildeling fra OS.
  3. Kernel32 API'er til at indeholde kernehukommelse til appen. Eksempel, CreateFile, CreateThread.
  4. User32 API'er og Gdi32 API'er.

Forebyggelse af hukommelseslækage

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

Overvågningsvaner

Hukommelseslækage i Windows 10

Du skal holde øje med unormal RAM-brug af individuelle programmer og applikationer. Du kan gå til Windows Task Manager ved at trykke på CTRL + SHIFT + ESC og tilføje kolonnerne som håndtag, brugerobjekter, GDI-objekter osv.

Dette hjælper dig med let at overvåge ressourceforbrug.

Microsoft-værktøjer til diagnosticering af hukommelseslækager

Forskellige værktøjer diagnosticerer hukommelseslækage til forskellige tildelingsformer:

  1. Applikationsverifikator diagnosticerer dyngelækager.
  2. UMDH (en komponent i Windows fejlfindingsværktøjer) diagnosticerer lækager til individuelle processer ved at overvåge bunkehukommelsestildelinger.
  3. Trace Capture giver en grundig analyse af RAM-brugen.
  4. Xperf sporer også bunkefordelingsmønstre.
  5. CRT Debug Heap sporer ikke kun bunktildelinger, men muliggør også kodningspraksis for at minimere lækager.
  6. JavaScript Memory Leak Detector fejler hukommelseslækage i koder.

Tip til brug

  1. Brug kernehÅNDTAG og sådanne andre smarte pointer til Win32-ressourcer og bunktildelinger.
  2. Få klasser til automatisk ressourcehåndtering til kernetildelinger fra ATL-biblioteket. C ++ -standarden har auto_ptr til bunktildelinger .
  3. Indkapsle COM-interface-markører i “smarte pointer” ved hjælp af _com_ptr_t eller _bstr_t eller _variant_t .
  4. Overvåg .NET-koden for unormal hukommelsesforbrug.
  5. Undgå flere udgangsstier for funktioner for at lade allokeringer frigøres fra variabler i de fleste blokke i slutningen af ​​en funktion.
  6. Brug kun native undtagelser, når du har frigjort alle tildelinger i _finally-blokken. Pak alle bunker og håndter tildelinger i smarte pointer for at bruge C ++ undtagelser.
  7. Ring altid til PropVariantClear- funktionen, før du geninitialiserer eller kasserer et PROPVARIANT objekt.

Fejlfinding af hukommelseslækage i Windows

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

1] Luk processer og genstart.

Hvis du ser, at en unødvendig proces tager for meget RAM, kan du afslutte processen i Jobliste. Du bliver nødt til at genstarte enheden, så den frigjorte plads er tilgængelig til brug af andre processer. Uden et problem med genstart af hukommelse løses ikke. En bestemt proces, der har fejl for at bremse pc'en, er Runtime Broker. Prøv, hvis det kun virker at deaktivere det.

2] Hukommelsesdiagnosticeringsværktøjer

Windows Memory Diagnostics

Sådan får du adgang til det indbyggede hukommelsesdiagnosticeringsværktøj til Windows:

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

Disse er stadig midlertidige rettelser.

3] Kontroller for driveropdateringer

Opdater driversoftware

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

  1. Tryk på Win + R, og åbn vinduet Kør . Skriv devmgmt.msc og tryk på Enter. Det fører dig til Enhedshåndtering .
  2. Se efter forældede drivere, og opdater dem alle.
  3. For opdateringer, du muligvis har gået glip af, skal du tjekke i Windows Update.

Dette var simpelt.

4] Optimer ydeevnen

Juster for at få den bedste ydelse

Justering af Windows til ydelse styrer alt inklusive processorplanlægning og hukommelsesforbrug for at stoppe hukommelseslækage. Følg disse trin:

  1. Højreklik på ' Denne pc ' og vælg ' Avancerede ' indstillinger i venstre rude.
  2. Under fanen ' Avanceret ' skal du gå til ' Ydeevne ' efterfulgt af ' Indstillinger '.
  3. Marker ' Justér for bedste ydelse ', og klik på OK .
  4. Genstart og kontroller, om problemet er løst.

Hvis denne enkle løsning ikke fungerede, kan du prøve den næste løsning.

5] Deaktiver programmer, der kører ved opstart

Opstartsprogrammer

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

  1. Gå til ' Jobliste '.
  2. Gå til ' Opstart '.
  3. Deaktiver startprogrammerne, som du ikke har brug for at køre som standard.

6] Defrag harddisk

Diskdefragmentering

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

  1. Gå til ' Denne pc ' eller ' Denne computer '.
  2. Højreklik på systemets harddisk (normalt C: drev).
  3. Gå til ' Værktøjer ' under ' Egenskaber ' og vælg ' Optimer '.
  4. Vælg det drev, der skal defragmenteres, og vælg ' Analyser '.

Genstart computeren efter den nye fragmentering.

7] ClearPage-fil ved nedlukning

Det bliver komplekst nu - men rolig. Sådan ryddes sidefilen ved hver nedlukning:

  • Skriv regedit på Søg for at starte Registreringseditor.
  • Indtast denne sti:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Skift værdien af ClearPageFileAtShutDown til '1'.
  • Gem ændringerne, og genstart enheden.

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

9] Deaktiver Superfetch

Denne Windows-tjeneste optimerer ydelsen ved at minimere opstartstiden. Det lader Windows styre RAM-brug. Livet efter deaktivering af Superfetch er ikke praktisk, men gør det, hvis du skal. I det mindste prøv dette alene for at isolere problemet:

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

Aktivér Superfetch, hvis denne ikke fungerede.

10] Se efter malware

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

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

Original text


Hukommelseslækage i Windows 10