Etsi ja korjaa muistivuotoja Windows 11/10:ssä

Muistivuoto on resurssien väärinsijoittelu tietokoneohjelmassa, joka johtuu virheellisestä muistin allokoinnista . (Memory Leak)Se tapahtuu, kun käyttämätön RAM - paikka jää julkaisematta. Muistivuotoa ei pidä sekoittaa tilavuotoon, joka tarkoittaa ohjelmaa, joka käyttää enemmän RAM -muistia kuin on tarpeen. Windows 11/10/8/7 -järjestelmän muistivuodon sanotaan tapahtuneen, kun muistia ei vain voida käyttää, vaikka sitä ei käytetä.

Muistivuotoja Windows 11/10:ssä

Ennen kuin aloitat, sinun tulee tietää, että muistivuoto(Memory) on ohjelmistoongelma, jota voidaan korjata – esimerkiksi Javassa(Java) , JavaScriptissä(JavaScript) , C/C++:ssa, Windowsissa(Windows) jne. RAM -muistin tai kiintolevyn fyysistä vaihtamista ei vaadita.

Muistivuoto Windows 10:ssä

Miksi se on huono

On selvää, että muistivuoto on huono, koska se on bugi, virhe järjestelmässä. Mutta katsotaanpa, kuinka se tarkalleen vaikuttaa järjestelmään:

  1. Koska muisti ei vapaudu, vaikka sitä ei käytetä, se johtaa muistin ehtymiseen.
  2. Muistin loppuminen johtaa ohjelmistojen vanhenemiseen.
  3. Vähentynyt käytettävissä oleva muisti johtaa pidentyneeseen vasteaikaan ja järjestelmän huonoon suorituskykyyn.
  4. Tarkistamaton muistivuoto voi lopulta johtaa sovelluksen kaatumiseen.

Muistivuodon tunnistamiseksi ohjelmoijalla on oltava pääsy ohjelman lähdekoodiin.

Vuodon paikantaminen

Ongelman ratkaisemiseksi meidän on ensin tunnistettava se. Perusvaiheet muistivuodon paikallistamiseksi ovat:

  1. Vahvistus(Affirmation) : Sen määrittäminen, onko vuoto tapahtunut.
  2. Ydintilan muistivuodon etsiminen(Finding Kernel-mode memory leak) : Ydintilan ohjainkomponentin aiheuttaman vuodon paikantaminen.
  3. Käyttäjätilan muistivuodon etsiminen(Finding User-mode memory leak) : Käyttäjätilan ohjaimen tai sovelluksen aiheuttaman vuodon paikantaminen.

Muistin varaus

On olemassa erilaisia ​​tiloja, joissa sovellukset varaavat RAM -muistia . Jos tilaa ei vapaudu käytön jälkeen, tapahtuu muistivuoto allokointitavasta riippumatta. Joitakin yleisiä jakomalleja ovat:

  1. HealAlloc- toiminto keon muistin varaamiseen. C/C++-ajonaikaiset vastineet ovat malloc ja uusia.
  2. VirtualAlloc -toiminto suoraan allokointiin käyttöjärjestelmästä.
  3. Kernel32-sovellusliittymät(Kernel32 APIs) ytimen muistin säilyttämiseen sovellukselle. Esimerkki(Example) , CreateFile , CreateThread .
  4. User32 API:t ja Gdi32 API:t.

Estä muistivuodot Windowsissa

Tiedämme kaikki, että ennaltaehkäisy on parempi kuin hoito, joten tässä on joitain tapoja estää muistivuoto.

Seurantatottumukset

Muistivuotoja Windows 10:ssä

Sinun on pidettävä silmällä yksittäisten ohjelmien ja sovellusten epänormaalia RAM - käyttöä. Voit siirtyä Windowsin Tehtävienhallintaan(Windows Task Manager) painamalla CTRL+SHIFT+ESC ja lisäämällä sarakkeet, kuten Handles , User Objects , GDI Objects jne.

Tämä auttaa sinua helposti seuraamaan resurssien käyttöä.

Lue(Read) : Mitkä ovat tietokoneen muistityypit?(What are the Types of Memory in a computer?)

Microsoftin(Microsoft) työkalut muistivuotojen diagnosointiin

Eri työkalut diagnosoivat muistivuotoja eri allokointitiloissa:

  1. Application Verifier diagnosoi kasavuodot.
  2. UMDH ( Windows Debugging Toolsin(Windows Debugging Tools) komponentti ) diagnosoi yksittäisten prosessien vuodot tarkkailemalla keon muistin varauksia.
  3. Trace Capture RAM -muistin käytön perusteelliseen analysointiin .
  4. Myös Xperf seuraa kasan kohdistusmalleja.
  5. CRT Debug Heap ei ainoastaan ​​seuraa keon varauksia, vaan mahdollistaa myös koodauskäytännöt vuotojen minimoimiseksi.
  6. JavaScript Memory Leak Detector korjaa muistivuotoja koodeissa.

Käyttövinkkejä

  1. Käytä ytimen HANDLE :ia ja muita älykkäitä osoittimia Win32 - resursseihin ja keon varauksiin.
  2. Hanki(Get) luokat automaattista resurssienhallintaa varten ytimen allokoinneille ATL - kirjastosta. C++-standardissa on auto_ptr keon varauksille.
  3. Kapseloi COM(Encapsulate COM) -liitäntäosoittimet "älykkäisiin osoittimiin" _com_ptr_t :n tai _bstr_t :n tai _variant_t :n avulla .
  4. Tarkkaile (Monitor).NET - koodia epänormaalin muistin käytön varalta.
  5. Vältä(Avoid) useita poistumispolkuja funktioille, jotta varaukset vapautuvat muuttujista useimmissa lohkoissa funktion loppuun mennessä.
  6. Käytä(Use) alkuperäisiä poikkeuksia vasta, kun olet vapauttanut kaikki _finally- lohkon allokaatiot. Kääri(Wrap) kaikki kasa ja käsittele allokaatiot älykkäiksi osoittimiin käyttääksesi C++-poikkeuksia.
  7. Kutsu aina PropVariantClear- funktio ennen PROPVARIANT- objektin uudelleenalustamista tai hylkäämistä.

(Troubleshoot)Muistivuotojen vianmääritys Windowsissa(Windows)

Aivan kuten eri tapoja estää muistivuotoja, on olemassa erilaisia ​​tapoja pysäyttää muistivuodot. Mutta ennen kuin aloitat, muista luoda ensin järjestelmän palautuspiste .

1] Sulje prosessit ja käynnistä uudelleen.

Jos näet, että tarpeeton prosessi vie liikaa RAM -muistia , voit lopettaa prosessin Task Managerissa(Task Manager) . Sinun on käynnistettävä laite uudelleen, jotta vapautunut tila on muiden prosessien käytettävissä. Muistivuotoongelma(Restart) ei ratkea ilman uudelleenkäynnistystä. Yksi erityinen prosessi, jossa on virheitä hidastaakseen PC:tä, on Runtime Broker . Kokeile, toimiiko sen poistaminen yksinään.

2] Muistin diagnostiikkatyökalut

Windowsin muistin diagnostiikka

Sisäänrakennetun Windows - muistin diagnostiikkatyökalun käyttäminen:(Memory Diagnostic Tool)

  1. Tallenna kaikki tärkeät työsi.
  2. Paina Win + R avataksesi Suorita(Run) - ikkunan.
  3. Kirjoita Suorita(Run) - ikkunaan komento mdsched.exe .
  4. Käynnistä tietokone uudelleen.
  5. Suorita uudelleenkäynnistyksen jälkeen perusskannaus tai valitse Lisäasetukset(Advanced) , kuten Testisekoitus(Test mix) tai Läpäisymäärä(Pass count) .
  6. Aloita testi painamalla F10 .

Nämä ovat edelleen väliaikaisia ​​korjauksia.

3] Tarkista ohjainpäivitykset

Päivitä ohjainohjelmisto

Vanhentuneet ohjaimet aiheuttavat muistivuotoja. Pidä kaikki ajurit ajan tasalla :

  1. Paina Win + R ja avaa Suorita(Run) - ikkuna. Kirjoita devmgmt.msc ja paina Enter . Se vie sinut Laitehallintaan(Device Manager) .
  2. Tarkista(Check) vanhentuneet ohjaimet ja päivitä ne kaikki.
  3. Jos sinulla on ehkä jäänyt huomaamatta päivitykset, tarkista Windows Update .

Tämä oli yksinkertaista.

4] Optimoi suorituskyky

Säädä parhaan suorituskyvyn saavuttamiseksi

Windowsin suorituskyvyn säätäminen hallitsee kaikkea, mukaan lukien prosessorin ajoitus ja muistin käyttö muistivuotojen estämiseksi. Toimi seuraavasti:

  1. Napsauta hiiren kakkospainikkeella kohtaa " Tämä tietokone(This PC) " ja valitse vasemmasta ruudusta " Lisäasetukset ".(Advanced)
  2. Siirry Lisäasetukset(Advanced) -välilehden kohtaan Suorituskyky(Performance) ja sen jälkeen Asetukset(Settings) .
  3. Valitse " Säädä parhaan suorituskyvyn saavuttamiseksi(Adjust for best performance) " ja napsauta OK .
  4. Käynnistä uudelleen(Restart) ja tarkista, onko ongelma ratkaistu.

Jos tämä yksinkertainen ratkaisu ei toimi, kokeile seuraavaa ratkaisua.

5] Poista käynnistyksen(Startup) yhteydessä käynnissä olevat ohjelmat käytöstä(Programs)

Käynnistysohjelmat

Ongelmallisten ohjelmien poistaminen käytöstä on ainoa tapa päästä eroon muistivuoto-ongelmasta. Siirry Task Manageriin(Task Manager) ja poista vianmääritysohjelma käytöstä. Jos et tiedä, mitkä ohjelmat aiheuttavat ongelmia, toimi näin:

  1. Siirry kohtaan " Task Manager ".
  2. Siirry kohtaan " Käynnistys(Startup) ".
  3. Poista käytöstä käynnistysohjelmat, joita(Disable the startup programs) sinun ei tarvitse ajaa oletuksena.

6] Eheytä kiintolevy

Levyn eheytys

Vaikka Windows 10 tekee tämän puolestasi automaattisesti, saatat joutua eheyttämään kiintolevyt ajoittain suorituskyvyn optimoimiseksi:

  1. Siirry kohtaan " Tämä tietokone(This PC) " tai " Oma tietokone(My Computer) ".
  2. Napsauta hiiren kakkospainikkeella(Right-Click) järjestelmän kiintolevyä (yleensä C: asema).
  3. Siirry ' Ominaisuudet ' -kohdan ' (Properties)Työkalut(Tools) ' -kohtaan ja valitse ' Optimoi(Optimize) '.
  4. Valitse defragoitava asema ja valitse Analysoi(Analyze) .

Käynnistä tietokone uudelleen uuden pirstoutumisen jälkeen.

7] ClearPage-tiedosto sammutettaessa

Se on nyt monimutkaista, mutta älä huoli. Voit tyhjentää sivutiedoston jokaisen sammutuksen yhteydessä(clear the Page File at every shutdown) seuraavasti:

  • Kirjoita hakuun (Search)regedit käynnistääksesi rekisterieditorin(Registry Editor) . _
  • Anna tämä polku:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Muuta ClearPageFileAtShutDown arvoksi "1".( ClearPageFileAtShutDown to ‘1’.)
  • Tallenna muutokset ja käynnistä(Restart) laite uudelleen.

Tämän pitäisi tehdä se. Muista, että sammutusprosessi kestää hieman kauemmin.

9] Poista Superfetch käytöstä

Tämä Windows-palvelu(Windows Service) optimoi suorituskyvyn minimoimalla käynnistysajan. Sen avulla Windows voi hallita RAM -muistin käyttöä. Elämä (Life)Superfetchin(Superfetch) poistamisen jälkeen ei ole mukavaa, mutta tee se tarvittaessa. Kokeile ainakin tätä yksin ongelman eristämiseksi:

  1. Hae services.msc ja siirry Services Manageriin.
  2. Etsi " Superfetch " ja napsauta sitä hiiren kakkospainikkeella siirtyäksesi " Ominaisuudet(Properties) " -kohtaan.
  3. Valitse ' Pysäytä(Stop) '.
  4. Myös " Poista(Disable) " palvelu avattavasta valikosta.
  5. Käynnistä tietokone uudelleen ja tarkista, onko suorituskyky parantunut.

Ota Superfetch käyttöön, jos tämä ei toiminut.

10] Tarkista haittaohjelmat

Käytä kolmannen osapuolen virustorjuntaohjelmistoa tai Windows 10:n sisäistä Windows Defenderiä(Windows Defender) haittaohjelmien tarkistamiseen ja poistamiseen. Varmista(Make) , että virustorjunta on päivitetty tukemaan käyttöjärjestelmääsi, jotta se ei päädy syynä muistivuotoon.

Jokainen ratkaisu, jota saatat joskus tarvita löytää tai estää muistivuotoja, on täällä. Voit lukea lisää muistivuodoista MSDN :ssä ja Microsoftissa(Microsoft) .



About the author

Olen web-kehittäjä, jolla on kokemusta sekä Windows 11:n että 10:n kanssa työskentelystä. Olen myös ollut Firefox-käyttäjä useiden vuosien ajan ja olen oppinut käyttämään täysin uutta Xbox One -pelikonsolia. Suurin kiinnostuksen kohteeni ovat ohjelmistokehitys, erityisesti web- ja mobiilikehitys, sekä datatiede. Olen erittäin perehtynyt erilaisiin tietokonejärjestelmiin ja niiden käyttöön, joten voin antaa puolueetonta palautetta erilaisista käyttämistäsi ohjelmista tai palveluista.



Related posts