Memóriaszivárgások keresése és javítása a Windows 11/10 rendszerben

A memóriaszivárgás(Memory Leak) az erőforrások helytelen elhelyezése egy számítógépes programban a hibás memóriafoglalás miatt. Ez akkor fordul elő, ha egy nem használt RAM hely kiadatlan marad. A memóriaszivárgás nem tévesztendő össze a helyszivárgással, amely arra utal, hogy egy program a szükségesnél több RAM -ot használ . Memóriaszivárgás a Windows 11/10/8/7 rendszeren állítólag akkor történt, amikor a memória nem érhető el annak ellenére, hogy nincs használatban.

Memóriaszivárgás a Windows 11/10 rendszerben

Mielőtt elkezdené, tudnia kell, hogy a memóriaszivárgás(Memory) egy hibakereső szoftverprobléma – például Java , JavaScript , C/C++, Windows stb. esetén. A RAM vagy a merevlemez fizikai cseréje nem szükséges.

Memóriaszivárgás a Windows 10 rendszerben

Miért rossz

Nyilvánvaló, hogy a memóriaszivárgás rossz, mert ez egy hiba, a rendszer hibája. De nézzük meg, hogy ez pontosan milyen hatással van a rendszerre:

  1. Mivel a memória akkor sem szabadul fel, ha nincs használatban, ez a memória kimerüléséhez vezet.
  2. A memória kimerülése a szoftver elöregedéséhez vezet.
  3. A rendelkezésre álló memória csökkenése megnövekedett válaszidőhöz és a rendszer gyenge teljesítményéhez vezet.
  4. Az ellenőrizetlen memóriaszivárgás végül egy alkalmazás összeomlásához vezethet.

A memóriaszivárgás azonosításához a programozónak hozzá kell férnie a program forráskódjához.

A szivárgás helyének meghatározása

A probléma megoldásához először azonosítanunk kell. A memóriaszivárgás felderítésének alapvető lépései a következők:

  1. Megerősítés(Affirmation) : annak meghatározása, hogy történt-e szivárgás.
  2. Kernel módú memóriaszivárgás keresése(Finding Kernel-mode memory leak) : Kernel módú illesztőprogram-összetevő által okozott szivárgás megkeresése.
  3. Felhasználói módú memóriaszivárgás keresése(Finding User-mode memory leak) : Felhasználói módú illesztőprogram vagy alkalmazás által okozott szivárgás megkeresése.

Memóriakiosztás

Az alkalmazások különböző módokban foglalják le a RAM -ot . Ha a használat után nem szabadul fel hely, a memóriaszivárgás az elosztás módjától függetlenül megtörténik. Néhány gyakori elosztási minta:

  1. HealAlloc funkció a kupac memória lefoglalásához. A C/C++ futásidejű megfelelői malloc és újak.
  2. VirtualAlloc funkció az operációs rendszerből történő közvetlen kiosztáshoz.
  3. Kernel32 API(Kernel32 APIs) -k az alkalmazás kernelmemóriájának tárolására. Példa(Example) , CreateFile , CreateThread .
  4. User32 API-k és Gdi32 API-k.

Memóriaszivárgások megelőzése a Windows rendszerben

Mindannyian tudjuk, hogy a megelőzés jobb, mint a gyógyítás, ezért íme néhány módszer a memóriaszivárgás megelőzésére.

Szokások megfigyelése

Memóriaszivárgás a Windows 10 rendszerben

Figyelnie kell az egyes programok és alkalmazások rendellenes RAM -használatára. A Windows Feladatkezelőbe(Windows Task Manager) léphet a CTRL CTRL+SHIFT+ESC , és hozzáadhatja az olyan oszlopokat, mint a Handles , User Objects , GDI Objects stb.

Ez segít az erőforrás-felhasználás egyszerű nyomon követésében.

Olvassa el(Read) : Melyek a számítógép memóriatípusai?(What are the Types of Memory in a computer?)

Microsoft eszközök a memóriaszivárgások diagnosztizálására

Különféle eszközök diagnosztizálják a memóriaszivárgásokat különböző kiosztási módokhoz:

  1. Az Alkalmazás-ellenőrző(Application Verifier) diagnosztizálja a kupacszivárgásokat.
  2. Az UMDH(UMDH) (a Windows Debugging Tools egyik összetevője ) az egyes folyamatok szivárgását diagnosztizálja a halommemória-lefoglalások figyelésével.
  3. Trace Capture a (Capture)RAM - használat alapos elemzéséhez .
  4. Az Xperf is követi a kupackiosztási mintákat.
  5. A CRT Debug Heap(CRT Debug Heap) nemcsak a kupacok kiosztását követi nyomon, hanem lehetővé teszi a kódolási gyakorlatokat is a szivárgások minimalizálása érdekében.
  6. A JavaScript memóriaszivárgás-érzékelő(JavaScript Memory Leak Detector) hibakeresi a kódok memóriaszivárgását.

Használati tippek

  1. Használja a kernel HANDLE -t és más intelligens mutatókat a Win32 erőforrásokhoz és kupacok kiosztásához.
  2. Szerezzen(Get) be osztályokat az automatikus erőforrás-kezeléshez a kernelkiosztásokhoz az ATL - könyvtárból. A C++ szabványnak van auto_ptr -je a kupackiosztásokhoz.
  3. A COM(Encapsulate COM) interfész mutatóit beágyazza az „okos mutatókba” a _com_ptr_t vagy _bstr_t vagy _variant_t segítségével(_variant_t) .
  4. Figyelje(Monitor) a .NET kódot a rendellenes memóriahasználatra.
  5. Kerülje(Avoid) el a függvények több kilépési útvonalát, hogy a függvény végére a legtöbb blokkban az allokációk megszabaduljanak a változóktól.
  6. Csak azután használjon(Use) natív kivételeket, miután felszabadította az összes kiosztást a _finally blokkban. Csomagolja(Wrap) be az összes kupacot és kezelje az allokációt intelligens mutatókba a C++ kivételek használatához.
  7. Mindig hívja meg a PropVariantClear függvényt egy (PropVariantClear)PROPVARIANT objektum újrainicializálása vagy elvetése előtt .

Memóriaszivárgások elhárítása(Troubleshoot) a Windows rendszerben(Windows)

Csakúgy, mint a memóriaszivárgás megelőzésének különféle módjai, a memóriaszivárgások megállításának számos módja van. Mielőtt azonban elkezdené, ne felejtse el létrehozni a rendszer-visszaállítási pontot .

1] Zárja be a folyamatokat és indítsa újra.

Ha azt látja, hogy egy felesleges folyamat túl sok RAM -ot foglal el, leállíthatja a folyamatot a Feladatkezelőben(Task Manager) . Újra kell indítania az eszközt, hogy a felszabaduló terület elérhető legyen más folyamatok számára. Újraindítás(Restart) nélkül a memóriaszivárgás probléma nem oldódik meg. Az egyik olyan folyamat, amely hibákkal lassítja a számítógépet, a Runtime Broker . Próbáld meg, hogy egyedül ennek a letiltása működik-e.

2] Memóriadiagnosztikai eszközök

Windows memóriadiagnosztika

A Windows beépített memóriadiagnosztikai eszközének elérése:(Memory Diagnostic Tool)

  1. Mentse el az összes fontos munkáját.
  2. Nyomja meg a Win + R billentyűket a Futtatás(Run) ablak megnyitásához.
  3. Írja be az mdsched.exe parancsot a Futtatás(Run) ablakba.
  4. Indítsa újra a számítógépet.
  5. Újraindítás után hajtson végre egy alapszintű vizsgálatot, vagy lépjen a ' Speciális(Advanced) ' opciókhoz, például a ' Tesztmix(Test mix) ' vagy a ' Pass count '.
  6. Nyomja meg az F10 -et a teszt elindításához.

Ezek még ideiglenes javítások.

3] Ellenőrizze az illesztőprogram-frissítéseket

Frissítse az illesztőprogramot

Az elavult illesztőprogramok memóriaszivárgást okoznak. Tartsa frissítve az összes illesztőprogramot :

  1. Nyomja meg a Win + R billentyűket , és nyissa meg a Futtatás(Run) ablakot. Írja be a devmgmt.msc parancsot(devmgmt.msc) , és nyomja meg az Enter billentyűt . Ez az Eszközkezelőbe(Device Manager) viszi .
  2. Ellenőrizze(Check) az elavult illesztőprogramokat, és frissítse mindet.
  3. A frissítésekért, amelyeket esetleg elmulasztott, ellenőrizze a Windows Update webhelyen(Windows Update) .

Ez egyszerű volt.

4] A teljesítmény optimalizálása

Állítsa be a legjobb teljesítmény érdekében

A Windows teljesítményének beállítása mindent kezel, beleértve a processzor ütemezését és a memóriahasználatot a memóriaszivárgások megállítása érdekében. Kovesd ezeket a lepeseket:

  1. Kattintson a jobb gombbal az „ Ez a számítógép(This PC) ” elemre, és a bal oldali panelen válassza a „ Speciális ” beállításokat.(Advanced)
  2. A „ Speciális(Advanced) ” lapon lépjen a „ Teljesítmény(Performance) ” elemre , majd a „ Beállítások(Settings) ” elemre.
  3. Jelölje be a „ Beállítás a legjobb teljesítmény érdekében(Adjust for best performance) ” jelölőnégyzetet, majd kattintson az OK gombra(OK) .
  4. Indítsa újra(Restart) , és ellenőrizze, hogy a probléma megoldódott-e.

Ha ez az egyszerű megoldás nem működött, próbálkozzon a következő megoldással.

5] Az indításkor(Startup) futó programok(Programs) letiltása

Indító programok

A zavaró programok letiltása az egyetlen módja annak, hogy megszabaduljon a memóriaszivárgás problémájától. Lépjen a Feladatkezelőbe(Task Manager) , és tiltsa le a hibaelhárító programot. Ha nem tudja, mely programok okozzák a problémát, tegye a következőket:

  1. Lépjen a „ Feladatkezelő(Task Manager) ” elemre.
  2. Lépjen az " Indítás(Startup) " elemre.
  3. Tiltsa le azokat az indító programokat(Disable the startup programs) , amelyeket alapértelmezés szerint nem kell futtatnia.

6] Merevlemez töredezettségmentesítése

Lemez töredezettségmentesítés

Bár a Windows 10 ezt automatikusan elvégzi Ön helyett, előfordulhat, hogy a teljesítmény optimalizálása érdekében időnként töredezettségmentesítenie kell a merevlemezeket :

  1. Lépjen az „ Ez a számítógép(This PC) ” vagy a „ Sajátgép(My Computer) ” elemre.
  2. Kattintson jobb gombbal(Right-Click) a rendszer merevlemezére (általában C: meghajtó).
  3. Lépjen az " Eszközök(Tools) " elemre a " Tulajdonságok(Properties) " alatt, és válassza az " Optimalizálás(Optimize) " lehetőséget.
  4. Válassza ki a töredezettségmentesítéshez szükséges meghajtót, és válassza az „ Elemzés(Analyze) ” lehetőséget.

Indítsa újra a számítógépet az új töredezettség után.

7] ClearPage fájl leállításkor

Most kezd bonyolulttá válni – de ne aggódj. A következőképpen törölheti az oldalfájlt minden leállításkor(clear the Page File at every shutdown) :

  • A Rendszerleíróadatbázis-szerkesztő(Registry Editor) elindításához írja be a regedit parancsot(regedit) a Search mezőbe .
  • Írja be ezt az elérési utat:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Módosítsa a ClearPageFileAtShutDown értékét „1”-re.( ClearPageFileAtShutDown to ‘1’.)
  • Mentse el a változtatásokat, és indítsa újra(Restart) az eszközt.

Ennek meg kellene tennie. Ne feledje, hogy a leállítási folyamat egy kicsit több időt vesz igénybe.

9] A Superfetch letiltása

Ez a Windows-szolgáltatás(Windows Service) a rendszerindítási idő minimalizálásával optimalizálja a teljesítményt. Lehetővé teszi a Windows számára a (Windows)RAM - használat kezelését . A Superfetch(Superfetch) letiltása utáni élet(Life) nem kényelmes, de ha kell, tegye meg. Legalább ezt próbálja meg egyedül a probléma elkülönítéséhez:

  1. Keresse meg a services.msc fájlt, és lépjen a Services Manager oldalra.
  2. Keresse meg a „ Superfetch ” elemet , és kattintson rá a jobb gombbal a „ Tulajdonságok(Properties) ” megnyitásához.
  3. Válassza a „ Stop ” lehetőséget.
  4. A legördülő menüből válassza ki a szolgáltatás letiltását is.(Disable)
  5. Indítsa újra a számítógépet, és ellenőrizze, hogy javult-e a teljesítmény.

Engedélyezze a Superfetch-et, ha ez nem működött.

10] Ellenőrizze a rosszindulatú programokat

Használjon harmadik féltől származó víruskereső szoftvert vagy a Windows 10 házon belüli Windows Defenderjét(Windows Defender) a rosszindulatú programok ellenőrzéséhez és eltávolításához. Győződjön(Make) meg arról, hogy a víruskereső frissítve van, hogy támogassa az operációs rendszert, hogy végül ne ez legyen a memóriaszivárgás oka.

Itt található minden megoldás, amelyre szüksége lehet a memóriaszivárgások felkutatására vagy megelőzésére. A memóriaszivárgásokról az MSDN(MSDN) -en és a Microsofton(Microsoft) olvashat bővebben .



About the author

Számítógép-programozó vagyok, és több mint 15 éve. Szakértelmem szoftveralkalmazások fejlesztésében és karbantartásában, valamint ezen alkalmazások technikai támogatásában rejlik. Számítógép-programozást is tanítottam középiskolásoknak, jelenleg pedig profi oktató vagyok.



Related posts