Muistivuoto on vääränlainen resurssi tietokoneohjelmassa virheellisen muistin allokoinnin vuoksi. Se tapahtuu, kun RAM-sijainti, jota ei ole käytössä, jää julkaisematta. Muistivuotoa ei pidä sekoittaa tilavuotoon, mikä viittaa ohjelmaan, joka käyttää enemmän RAM-muistia kuin on tarpeen. Windows 10/8/7 -järjestelmän muistivuoto on sanottu tapahtuneen, kun muisti ei ole käytettävissä, vaikka sitä ei ole käytössä.
Muisti vuodot Windows 10: ssä
Ennen kuin aloitat, tiedät, että Memory leak on vianmääritysohjelma, esimerkiksi Java, JavaScript, C / C ++, Windows jne. RAM- tai kiintolevyn vaihtaminen ei ole välttämätöntä.
Miksi se on huono
On selvää, että muistivuoto on huono, koska se on vika, virhe järjestelmässä. Mutta selvitämme, miten se vaikuttaa järjestelmään:
- Koska muistia ei ole vapautettu, vaikka sitä ei käytetä, se johtaa muistin ehtymiseen.
- Muistin loppuminen johtaa ohjelmiston ikääntymiseen.
- Vähennetty käytettävissä oleva muisti lisää järjestelmän vasteaikaa ja suorituskykyä.
- Väärätyt muistivuodot voivat johtaa sovelluksen kaatumiseen.
Muistivivuuden tunnistamiseksi ohjelmoija tarvitsee pääsyn ohjelman lähdekoodiin.
Vuodon löytäminen
Ongelman ratkaisemiseksi meidän on tunnistettava se ensin. Perusvaiheet muistivuotojen löytämiseksi ovat:
- vakuutus: Määrittää onko vuoto tapahtunut.
- Kernel-tilan muistivuodon löytäminen: Ytimen tilan ohjainkomponentin aiheuttama vuoto.
- Käyttäjätilan muistivuodon löytäminen: Käyttäjämuotoisen ohjaimen tai sovelluksen aiheuttama vuoto.
Muistin kohdistaminen
On olemassa erilaisia tiloja, joissa sovellukset varaavat RAM-muistia. Jos tilaa ei vapauteta käytön jälkeen, muistivuoto esiintyy riippumatta jakotavasta. Joitakin yleisiä jakamismalleja ovat:
- HealAlloc-funktio kasa muistin allokoinnille. C / C ++ -kehitysekvivalentit ovat malloc ja uusia.
- VirtualAlloc-toiminto suorasta allokoinnista käyttöjärjestelmästä.
- Kernel32-sovellusliittymät pitävät ytimen muistia sovellukselle. Esimerkki: CreateFile, CreateThread.
- User32-sovellusliittymät ja Gdi32-sovellusliittymät.
Muistivuotojen estäminen
Tiedämme kaikki, että ennaltaehkäisy on parempi kuin parannuskeino, joten tässä on joitain keinoja estää muistivuoto.
Valvontatavat
Sinun on pidettävä silmällä yksittäisten ohjelmien ja sovellusten epänormaalia RAM-käyttöä. Voit siirtyä Windows Task Manager -ohjelmaan painamalla CTRL + VAIHTO + ESC ja lisäät sarakkeet, kuten kädensijat, käyttäjäobjektit, GDI-esineet jne.
Näin voit seurata resurssien käyttöä helposti.
Microsoftin työkalut diagnosoimaan muistivuotoja
Erilaiset työkalut diagnosoivat muistivuotoja eri jakotiloille:
- Sovelluksen tarkastaja diagnosoi kasan vuotoja.
- UMDH (osa Windowsin vianmääritystyökaluista) määrittää vuotoja yksittäisille prosesseille tarkkailemalla kasa muistimäärityksiä.
- Trace Capture perusteellisen analyysin RAM-käyttö.
- Xperf myös jälkiä kappaleiden jakamismalleja.
- CRT Debug Heap ei vain jälkiä kappaleita, vaan myös mahdollistaa koodausmenetelmät minimoimaan vuotoja.
- JavaScript Memory Leak Detector korjaa muistivuodot koodeissa.
Käyttövinkkejä
- Käytä ydintä KÄSITELLÄs ja muut Win32: n resurssien ja kasaan allokoidut älykkäät osoittimet.
- Hanki luokkia automaattiseen resurssienhallintaan ATK-kirjaston ytimen allokoinnille. C ++ -standardi on auto_ptr kasaosuuksia varten.
- Encapsulate COM-rajapinnan osoittimet "älykkäät osoittimet" avulla _com_ptr_t tai _bstr_t tai _variant_t.
- Seuraa.NET-koodia epänormaalin muistin käytön suhteen.
- Vältä useita poistumispolkuja toiminnoille, jotta allokaatiot vapautetaan useimmissa lohkoissa muuttujista funktion loppuessa.
- Käytä alkuperäisiä poikkeuksia vasta sen jälkeen, kun kaikki varaukset on vapautettu lopullisesti. Kierrä kaikki kasaan ja käsittele kohdennuksia älykkäiksi osoittimiksi, jotta voit käyttää C ++-poikkeuksia.
- Soita aina PropVariantClear toiminto ennen PROPVARIANT-objektin uudelleen aloittamista tai hylkäämistä.
Muistivuotojen vianmääritys Windowsissa
Aivan kuten eri tapoja estää muistivuotoja, on olemassa useita tapoja lopettaa muisti vuotaminen.
1] Sulje prosessit ja käynnistä uudelleen.
Jos näet, että tarpeeton prosessi vie liikaa RAM-muistia, voit lopettaa prosessin Tehtävienhallinnassa. Sinun on käynnistettävä laite uudelleen, jotta vapautettu tila on käytettävissä muiden prosessien käyttöön. Ilman uudelleenkäynnistystä muistivuotoa ei ratkaista. Yksi erityinen prosessi, jolla on vikoja PC: n hidastamiseksi, on Runtime Broker. Kokeile, jos poistat sen käytöstä yksin.
2] Muistin diagnostiikkatyökalut
- Tallenna kaikki tärkeät työt.
- Lehdistö Win + R avaa Juosta ikkuna.
- Kirjoita komento mdsched.exe vuonna Juosta ikkuna.
- Käynnistä tietokone uudelleen.
- Uudelleenkäynnistyksen jälkeen suorita perus-skannaus tai siirry " Pitkälle kehittynyt"Vaihtoehtoja, kuten" Testiseos"Tai" Pass count ’.
- Lehdistö F10 aloittaa testi.
Nämä ovat vielä väliaikaisia korjauksia.
3] Tarkista ohjainpäivitykset
- 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 päivitykset saattavat olla kadonneet, tarkista Windows Update.
Tämä oli yksinkertaista.
4] Optimoi suorituskyky
- Napsauta hiiren oikealla näppäimellä " Tämä tietokone'Ja valitse' Pitkälle kehittynyt'Asetukset vasemmassa ruudussa.
- Alla ' Pitkälle kehittynyt'Välilehti, siirry kohtaan' Esitys', jonka jälkeen ' asetukset ’.
- Tarkistaa ' Säädä parhaan suorituskyvyn saavuttamiseksiJa napsauta kunnossa.
- Käynnistä uudelleen ja tarkista, onko ongelma ratkaistu.
Jos tämä yksinkertainen ratkaisu ei toimi, kokeile seuraavaa ratkaisua.
5] Poista Käynnistys käynnissä olevat ohjelmat käytöstä
- Mene ' Tehtäväpäällikkö ’.
- Mene ' Aloittaa ’.
- Poista käynnistysohjelmat käytöstä, joita sinun ei tarvitse suorittaa oletuksena.
6] Defrag kovalevy
- Mene ' Tämä tietokone"Tai" Tietokoneeni ’.
- Napsauta hiiren kakkospainikkeella järjestelmän kiintolevyä (yleensä C: asema).
- Mene ' Työkalut' alla ' ominaisuudet'Ja valitse' Optimoida ’.
- Valitse taajuusmuuttaja ja valitse " Analysoida ’.
Käynnistä tietokone uudelleen uuden pirstoutumisen jälkeen.
7] ClearPage-tiedosto suljetaan
Se on nyt monimutkainen - mutta älä huoli. Näin poistat sivutiedoston jokaisessa sammutuksessa:
- Tyyppi regedit Etsi käynnistää Rekisterieditori.
- Anna tämä polku: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Muuta arvoa ClearPageFileAtShutDown on '1'.
- Tallenna muutokset ja Käynnistä laite uudelleen.
Tämän pitäisi tehdä se.
9] Poista Superfetch käytöstä
Tämä Windows-palvelu optimoi suorituskyvyn minimoimalla käynnistysajan. Sen avulla Windows hallitsee RAM-käyttöä. Elämä, kun Superfetch ei ole käytössä, ei ole kätevä, mutta tee se, jos tarvitset. Ainakin yritä tätä yksin erottamaan ongelma:
- Hae services.msc ja mene Palvelupäällikköön.
- Etsiä ' SuperFetch'Ja napsauta hiiren kakkospainikkeella siirtyäksesi' ominaisuudet ’.
- Valitse " Stop ’.
- 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 toimi.
10] Tarkista haittaohjelmat
Käytä kolmannen osapuolen virustentorjuntaohjelmistoa tai Windows 10: n sisäistä Windows Defender -ohjelmaa haittaohjelmien tarkistamiseen ja poistamiseen. Varmista, että virustorjunta päivitetään tukemaan käyttöjärjestelmääsi, jotta se ei päätyisi muistin vuotamisen syyksi.
Jokainen ratkaisu, johon saatat joutua etsimään tai estämään muistivuotoja, on täällä. Voit lukea lisää muistivuotoista MSDN: ssä ja Microsoftissa.
Aiheeseen liittyvät julkaisut:
- Fix Windows Stop virheet tai Blue Screen of Death
- Miksi Windowsissa on vähemmän RAM-muistia kuin asennettuna?
- Tee Windows 10 Käynnistä, Suorita, Sammuta nopeammin
- Fyysisen muistin rajoitukset Crash Dump -tiedostoissa Windows 10/8/7: lle
- Muistikompressio Windows 10: ssä