A. Mäluleke on rämpsposti mälu jaotamise tõttu ressursi valede paigutamine arvutiprogrammile. See juhtub, kui RAMi asukoht, mida ei kasutata, jääb kasutamata. Mälu leket ei tohi segi ajada ruumi lekkimisega, mis viitab programmile, mis kasutab rohkem RAM kui vaja. Windows 10/8/7 süsteemi mälu lekkimine on toimunud siis, kui mälu ei kasutata, isegi kui seda ei kasutata.
Mälu leke Windows 10-s
Enne alustamist peaksite teadma, et mälu lekkimine on probleemide lahendamine, näiteks Java, JavaScript, C / C ++, Windows jne. Mälu või kõvaketta füüsiline asendamine ei ole kohustuslik.
Miks on see halb?
On selge, et mälu lekkimine on halb, kuna see on vea, süsteemis vale. Kuid leiame, kuidas täpselt see süsteem mõjutab:
- Kuna mälu ei vabastata isegi siis, kui seda ei kasutata, põhjustab see mälu kadu.
- Mälu tulemuste ammendumine tarkvara vananemisel.
- Vähendatud vaba mälu abil suureneb reaktsiooniaeg ja süsteem ei suuda jõudlust saavutada.
- Märgistamata mälu lekkimine võib lõppkokkuvõttes põhjustada rakenduse krahhi.
Mälu leke tuvastamiseks peab programmeerijal olema juurdepääs programmi lähtekoodile.
Lekke leidmine
Probleemi lahendamiseks peame selle kõigepealt kindlaks tegema. Peamised sammud mälu lekke tuvastamiseks on järgmised:
- Kinnitus: Lekke tuvastamine.
- Kerneli režiimi mälu leke leidmine: Kernel-mode draiveri komponendi lekke leidmine.
- Kasutaja režiimi mälu leidmine: Kasutajarežiimi draiveri või rakenduse põhjustatud lekke leidmine.
Mälu jaotamine
Määravad erinevad režiimid, milles rakendused eraldavad RAM-i. Kui ruumi pärast kasutamist ei vabastata, levib mälu sõltumata eraldamise viisist. Mõned ühised jaotamisviisid on:
- HealAlloc funktsioon mähkmete mälu jaotamiseks. C / C ++ runtime ekvivalendid on malloc ja uued.
- VirtualAlloc funktsioon otseseks jaotamiseks operatsioonisüsteemist.
- Kernel32 API-d, et hoida rakenduse kerneli mälu. Näiteks CreateFile, CreateThread.
- User32 APIs ja Gdi32 API-sid.
Mälu lekke vältimine
Me kõik teame, et ennetamine on parem kui ravi, mistõttu on siin mõned võimalused mälu lekke vältimiseks.
Järelevalveharjumused
Te peate silma peal hoidma tavapärase RAM-i kasutamise üksikute programmide ja rakenduste puhul. Võite minna Windowsi tööülesannete haldurile vajutades CTRL + SHIFT + ESC ja lisage veerge nagu käepidemed, kasutajaobjektid, GDI-objektid jne
See aitab teil ressursikasutust hõlpsalt jälgida.
Microsoft tööriistad mälu lekke diagnoosimiseks
Erinevad tööriistad diagnoosivad mitmesuguste eraldamisrežiimide jaoks mälukasutust:
- Rakenduse kontrollija diagnoosib hunnik lekib.
- UMDH (Windowsi silumisriistade komponent) diagnoosib lekkeid üksikutele protsessidele, jälgides paljude mälu eraldisi.
- Trace Capture, et põhjalikult analüüsida RAM-i kasutamist.
- Xperf jälgib ka kihistuse jaotamise mudeleid.
- CRT Debug Heap mitte ainult jälgib hunnikute jaotamist, vaid võimaldab ka kodeerimismeetodeid lekke minimeerimiseks.
- JavaScripti mälu lekke tuvastaja salvestab mälu lekke koodidesse.
Kasutusviisid
- Kasuta kernelit KÄSITAGEs ja muud sellised nutikad näpunäited Win32i ressursside ja hunnikulu eraldamiseks.
- Hankige klassid ATL-i raamatukogu jaoks kerneli eraldiste automaatseks ressursside haldamiseks. C ++ standard on olemas auto_ptr kupli eraldamiseks.
- Kummutada COM-liidese osutid "arukate näpikute" abil _com_ptr_t või _bstr_t või _variant_t.
- Jälgige ebahariliku mälukasutusega.NET-koodi.
- Vältige mitmeid funktsioone, mis võimaldavad eraldada enamus plokkidest muutujaid funktsiooni lõpus.
- Kasutage kohalikke erandeid alles pärast kõikide eraldiste vabastamist lõppkasutajana. C ++ erandite kasutamiseks kleepige kõik hunnik ja käsitsige eraldised arukatele suunanumbritele.
- Alati helistage PropVariantClear enne PROPVARIANTi objekti uuesti taaskäivitamist või viskamist.
Windowsi mälu lekete tõrkeotsing
Mälu lekete vältimiseks on mitu lekkeid peatada mitmel viisil, nagu mitmesugused mälukasutuse vältimise viisid.
1] Sulgege protsessid ja taaskäivitage.
Kui näete mittevajalikku protsessi, võtab liiga palju RAMi, saate lõpetada protsessi tööriistahalduris. Peate seadme taaskäivitama nii, et vabanenud ruum oleks kasutatav teiste protsesside jaoks. Ilma taaskäivitamise mälu lekke probleemi ei lahendata. Üks konkreetne protsess, millel on vigu arvuti aeglustamiseks, on Runtime Broker. Proovige, kas see keelab, et see üksi töötab.
2] mälu diagnostika tööriistad
- Salvestage kõik oma olulised tööd.
- Vajuta Win + R avada Jookse aken.
- Sisestage käsk mdsched.exe aastal Jookse aken.
- Taaskäivitage arvuti.
- Pärast taaskäivitamist tehke põhiotsing või minge " Täpsemalt"Valikud nagu" Katsesegu"Või" Passide arv ’.
- Vajuta F10 katse alustamiseks.
Need on ikka veel ajutised parandused.
3] Kontrollige draiveri värskendusi
- Vajuta Win + R ja avage Jookse aken. Tüüp devmgmt.msc ja vajutage sisestusklahvi. See viib teid sisse Seadmehaldus.
- Kontrollige vananenud draivereid ja värskendage neid kõiki.
- Värskenduste puhul, mis te võtsite vastamata, kontrollige Windows Update'i.
See oli lihtne.
4] optimeerige jõudlust
- Paremklõpsake nuppu " See arvuti'Ja valige " Täpsemalt'Seaded vasakul paanil.
- Vastavalt " Täpsemalt'Sakk, mine' Jõudlus", Millele järgneb" Seaded ’.
- Kontrollima ' Parima jõudluse reguleerimiseks'Ja klõpsake Okei.
- Taaskäivitage ja kontrollige, kas probleem on lahendatud.
Kui see lihtne lahendus ei tööta, proovige järgmist lahendust.
5] Keela käivitamisel käivitatud programmid
- Minema ' Task Manager ’.
- Minema ' Käivitamine ’.
- Keela käivitusprogrammid, mida te pole vaikimisi vaja käitada.
6] Defrag kõvaketas
- Minema ' See arvuti"Või" Minu arvuti ’.
- Paremklõpsake süsteemi kõvaketast (tavaliselt C: draiv).
- Minema ' Tööriistad"All" Omadused'Ja valige " Optimeerige ’.
- Valige draiv defrag ja valige " Analüüsida ’.
Pärast uue killustatuse saatmist taaskäivitage oma arvuti.
7] ClearPage'i fail sulgemisel
See muutub nüüd keerukaks - kuid ärge muretsege. Lugege, kuidas kustutada lehe faili igal sulgemisel:
- Tüüp regedit Registriredaktor käivitamiseks käsku Search.
- Sisestage see tee: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Muuda väärtust ClearPageFileAtShutDown on "1".
- Salvestage muudatused ja taaskäivitage seade.
See peaks seda tegema.
9] Keela Superfetch
See Windowsi teenus optimeerib toimivust, minimeerides käivitamise aja. See võimaldab Windowsil RAMi kasutamist hallata. Elu pärast Superfetchi blokeerimist pole mugav, kuid seda tuleb teha, kui peate. Vähemalt proovige seda üksinda, et probleemi isoleerida:
- Otsing teenused.msc ja minge teenuste haldurile.
- Otsi ' Superfetch'Ja paremklõpsake seda, et minna' Omadused ’.
- Vali " Peatus ’.
- Samuti " Keela'Teenus rippmenüüst.
- Taaskäivitage arvuti ja kontrollige, kas jõudlus on paranenud.
Luba Superfetch, kui see ei tööta.
10] Kontrollige pahavara
Pahavara kontrollimiseks ja eemaldamiseks kasutage kolmanda osapoole viirusetõrjetarkvara või Windows 10-ga seotud Windows Defenderit. Veenduge, et teie operatsioonisüsteemi toetamiseks värskendatakse viirusetõrje, nii et see ei muutuks mälu lekke põhjuseks.
Igal lahendusel, mis sul võib-olla on vaja mälukeste leidmiseks või vältimiseks, on siin. Lisateavet MSDNi ja Microsofti mälukanalite kohta saate lugeda.
Seonduvad postitused:
- Fix Windows Stop vead või Sinine ekraan surma
- Miks Windows näitab vähem RAM kui installitud?
- Tehke Windows 10 Start, Run, Shutdown Faster
- Füüsilised mälu piirid Crash Dump-failides Windows 10/8/7 jaoks
- Mälu kokkusurumine Windows 10-s