A Muistivuoto on tietokoneohjelman resurssien väärä sijoitus virheellisen muistin allokoinnin vuoksi. Se tapahtuu, kun RAM-muistipaikka, jota ei käytetä, jää julkaisematta. Muistivuotoa ei pidä sekoittaa tilavuotoon, joka tarkoittaa ohjelmaa, joka käyttää enemmän RAM-muistia kuin on tarpeen. Muistivuoto Windows 10/8/7 -järjestelmässä sanotaan tapahtuneen, kun muistiin ei juuri pääse huolimatta siitä, että sitä ei käytetä.
Muistivuodot Windows 10: ssä
Ennen kuin aloitat, sinun on tiedettävä, että muistivuoto on ohjelmistokysymys virheenkorjaamiseksi - esimerkiksi Java, JavaScript, C / C ++, Windows jne. RAM-muistia tai kiintolevyä ei tarvitse korvata fyysisesti.
Miksi se on huono
On selvää, että muistivuoto on huono, koska se on vika, järjestelmän virhe. Mutta selvitetään, miten se vaikuttaa järjestelmään:
- Koska muisti ei vapaudu, vaikka sitä ei käytettäisikään, se johtaa muistin ehtymiseen.
- Muistin loppuminen johtaa ohjelmiston ikääntymiseen.
- Vähentynyt käytettävissä oleva muisti lisää vasteaikaa ja järjestelmän heikkoa suorituskykyä.
- Tarkistamaton muistivuoto voi lopulta johtaa sovelluksen kaatumiseen.
Muistivuodon tunnistamiseksi ohjelmoijalla on oltava pääsy ohjelman lähdekoodiin.
Vuodon sijainti
Ongelman ratkaisemiseksi meidän on ensin tunnistettava se. Perusvaiheet muistivuodon löytämiseksi ovat:
- Vahvistus: Vuodon havaitseminen.
- Ytintilan muistivuodon löytäminen: Ydintilan ajurikomponentin aiheuttama vuoto.
- Käyttäjätilan muistivuodon löytäminen: Käyttäjätilan ohjaimen tai sovelluksen aiheuttaman vuoton sijainti.
Muistin allokointi
On olemassa erilaisia tiloja, joissa sovellukset varaavat RAM-muistia. Jos tilaa ei vapauteta käytön jälkeen, muistivuoto tapahtuu varaustilasta riippumatta. Joitakin yleisiä allokaatiomalleja ovat:
- HealAlloc-funktio kasan muistin allokoimiseksi. C / C ++ -aikavastaavat ovat malloc ja uusia.
- VirtualAlloc-toiminto suoralle allokoinnille käyttöjärjestelmästä.
- Kernel32-sovellusliittymät sovelluksen ytimen muistin pitämiseen. Esimerkki: CreateFile, CreateThread.
- User32-sovellusliittymät ja Gdi32-sovellusliittymät.
Muistivuotojen estäminen
Me kaikki tiedämme, että ehkäisy on parempi kuin parannuskeino, joten tässä on joitain tapoja estää muistivuoto.
Seurantatottumukset
Sinun on pidettävä silmällä yksittäisten ohjelmien ja sovellusten epänormaalia RAM-käyttöä. Voit siirtyä Windowsin Tehtävienhallintaan painamalla CTRL + VAIHTO + ESC ja lisää sarakkeet kuten kahvat, käyttäjäobjektit, GDI-objektit jne.
Tämä auttaa sinua seuraamaan helposti resurssien käyttöä.
Lukea: Mitkä ovat tietokoneen muistityypit?
Microsoftin työkalut muistivuotojen diagnosointiin
Erilaiset työkalut diagnosoivat muistivuotoja eri allokointitiloille:
- Application Verifier diagnosoi kasan vuotoja.
- UMDH (Windows-virheenkorjaustyökalujen komponentti) diagnosoi vuotoja yksittäisille prosesseille seuraamalla kasan muistin varauksia.
- Trace Capture RAM-käytön perusteelliseen analysointiin.
- Myös Xperf seuraa kasan allokointimalleja.
- CRT Debug Heap paitsi seuraa kasan allokaatioita myös mahdollistaa koodauskäytännöt minimoimaan vuotoja.
- JavaScript-muistivuototunnistin korjaa muistivuodot koodeissa.
Käyttövinkit
- Käytä ydintä KAHVAs ja muut älykkäät osoittimet Win32-resursseille ja kasan allokoinnille.
- Hanki luokat automaattista resurssien hallintaa varten ytimen allokoinnille ATL-kirjastosta. C ++ -standardilla on auto_ptr kasan jakamiseen.
- Kapseloi COM-liitäntäosoittimet "älykkäisiin osoittimiin" _com_ptr_t tai _bstr_t tai _variantti.
- Seuraa .NET-koodi epänormaalille muistin käytölle.
- Vältä useita funktioiden poistumisreittejä, jotta varaukset vapautuvat muuttujista useimmissa lohkoissa funktion loppuun mennessä.
- Käytä natiivipoikkeuksia vasta, kun kaikki varaukset on vapautettu _finally-lohkossa. Kääri kaikki kasan ja käsittelyn varaukset älykkäisiin osoittimiin C ++ -poikkeuksien käyttämiseksi.
- Soita aina PropVariantClear ennen PROPVARIANT-objektin uudelleen alustamista tai hävittämistä.
Muistivuotojen vianmääritys Windowsissa
Aivan kuten eri tapoja estää muistivuodot, on olemassa useita tapoja estää muistivuodot. Mutta ennen kuin aloitat, muista ensin luoda järjestelmän palautuspiste.
1] Sulje prosessit ja käynnistä se uudelleen.
Jos huomaat tarpeettoman prosessin vievän liikaa RAM-muistia, voit lopettaa prosessin Tehtävienhallinnassa. Sinun on käynnistettävä laite uudelleen, jotta vapautunut tila on käytettävissä muiden prosessien käyttöön. Ilman uudelleenkäynnistysmuistivuotoa ei ratkaista. Yksi tietty prosessi, jossa on vikoja tietokoneen hidastamiseksi, on Runtime Broker. Kokeile, toimiiko vain tämän poistaminen käytöstä.
2] Muistidiagnostiikkatyökalut
Sisäisen Windows-muistin diagnostiikkatyökalun käyttäminen:
- Tallenna kaikki tärkeät työt.
- Lehdistö Win + R avata Juosta ikkuna.
- Kirjoita komento mdsched.exe että Juosta ikkuna.
- Käynnistä tietokone uudelleen.
- Suorita uudelleenkäynnistyksen jälkeen peruskannaus tai siirryPitkälle kehittynyt'vaihtoehdot kuten'TestiseostaiPassien lukumäärä'.
- Lehdistö F10 aloittaaksesi testin.
Nämä ovat edelleen väliaikaisia korjauksia.
3] Tarkista ohjainpäivitykset
Vanhentuneet ohjaimet aiheuttavat muistivuotoja. Pidä kaikki ohjaimet ajan tasalla:
- Lehdistö Win + R ja avaa Juosta ikkuna. Tyyppi devmgmt.msc ja paina Enter. Se vie sinut Laitehallinta.
- Tarkista vanhentuneet ohjaimet ja päivitä ne kaikki.
- Jos haluat päivityksiä, saatat olla unohtanut, tarkista Windows Update.
Tämä oli yksinkertaista.
4] Optimoi suorituskyky
Windowsin säätäminen suorituskyvyn mukaan hallitsee kaiken, myös prosessorin ajoituksen ja muistin käytön muistivuotojen estämiseksi. Toimi seuraavasti:
- Napsauta hiiren kakkospainikkeellaTämä tietokone'ja valitse'Pitkälle kehittynytvasemmanpuoleisessa ruudussa.
- Alla 'Pitkälle kehittynyt'välilehti, siirry'Esitys', jonka jälkeen 'asetukset'.
- Tarkistaa 'Säädä parhaan suorituskyvyn saavuttamiseksija napsauta OK.
- Käynnistä uudelleen ja tarkista, onko ongelma ratkaistu.
Jos tämä yksinkertainen ratkaisu ei toiminut, kokeile seuraavaa ratkaisua.
5] Poista Käynnistyksen yhteydessä käynnissä olevat ohjelmat käytöstä
Auttavien ohjelmien poistaminen käytöstä on ainoa tapa päästä eroon muistivuodosta. Siirry Tehtävienhallintaan ja poista vianmääritysohjelma käytöstä. Jos et tiedä mitkä ohjelmat aiheuttavat ongelmia, tee tämä:
- Mene 'Tehtävienhallinta'.
- Mene 'Aloittaa'.
- Poista käytöstä käynnistysohjelmat, joita sinun ei tarvitse suorittaa oletuksena.
6] Eheytä kiintolevy
Vaikka Windows 10 tekee tämän puolestasi automaattisesti, sinun on ehkä ajoittain eheytettävä kiintolevyt suorituskyvyn optimoimiseksi:
- Mene 'Tämä tietokonetaiTietokoneeni'.
- Napsauta hiiren kakkospainikkeella järjestelmän kiintolevyä (yleensä C: asema).
- Mene 'Työkalut' alla 'Ominaisuudet'ja valitse'Optimoida'.
- Valitse eheytettävä asema ja valitse 'Analysoida'.
Käynnistä tietokone uudelleen uuden sirpaloitumisen jälkeen.
7] ClearPage-tiedosto sammutettaessa
Se on nyt monimutkainen - mutta älä huoli. Näin tyhjennät sivutiedoston jokaisessa sammutuksessa:
- Tyyppi regedit haulla käynnistääksesi rekisterieditorin.
- Anna tämä polku:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMuistihallinta
- Muuta arvon ClearPageFileAtShutDown kohtaan '1'.
- Tallenna muutokset ja käynnistä laite uudelleen.
Tämän pitäisi tehdä se. Muista, että sammutusprosessisi vie vähän enemmän aikaa.
9] Poista Superfetch käytöstä
Tämä Windows-palvelu optimoi suorituskyvyn minimoimalla käynnistysajan. Sen avulla Windows voi hallita RAM-muistin käyttöä. Elämä Superfetchin poistamisen jälkeen ei ole kätevää, mutta tee se tarvittaessa. Ainakin kokeile tätä yksin ongelman eristämiseksi:
- Hae palvelut.msc ja mene palvelupäällikölle.
- Etsiä 'Superhaku'ja napsauta sitä hiiren kakkospainikkeella siirtyäksesi kohtaan'Ominaisuudet'.
- Valitse 'Lopettaa'.
- Myös 'Poista käytöstä'palvelu avattavasta valikosta.
- Käynnistä tietokone uudelleen ja tarkista, onko suorituskyky parantunut.
Ota Superfetch käyttöön, jos tämä ei toiminut.
10] Tarkista haittaohjelmien varalta
Käytä kolmannen osapuolen virustorjuntaohjelmaa tai Windows 10: n sisäistä Windows Defender -ohjelmaa haittaohjelmien skannaamiseen ja poistamiseen. Varmista, että virustentorjunta on päivitetty tukemaan käyttöjärjestelmääsi, jotta siitä ei pääse muistivuodon syytä.
Kaikki ratkaisut, joita saatat tarvita muistivuotojen löytämiseksi tai estämiseksi, ovat täällä. Voit lukea lisää muistivuodoista MSDN: ssä ja Microsoftissa.