A memóriaszivárgás az erőforrások helytelen elhelyezése a számítógépes programban a hibás memóriakiosztás miatt. Akkor történik, amikor a nem használt RAM-hely továbbra is kiadatlan marad. A memóriaszivárgás nem tévesztendő össze egy űrszivárgással, amely a szükségesnél több RAM-ot használó programra utal. Állítólag memóriaszivárgás történt a Windows 10/8/7 rendszeren, amikor a memória éppen nem érhető el annak ellenére, hogy nincs használatban.
Memóriaszivárgás a Windows 10 rendszerben
Mielőtt elkezdené, tudnia kell, hogy a memóriaszivárgás egy szoftverhiba, amelyet hibakeresni kell - például Java, JavaScript, C / C ++, Windows stb.
Miért rossz
Nyilvánvaló, hogy a memóriaszivárgás azért rossz, mert hiba, hiba a rendszerben. De derítsük ki, hogy pontosan hogyan hat a rendszerre:
- Mivel a memória még akkor sem szabadul fel, amikor nem használják, memória kimerülését eredményezi.
- A memória kimerülése a szoftver elöregedését eredményezi.
- A rendelkezésre álló memória csökkenése növeli a válaszidőt és a rendszer gyenge teljesítményét.
- 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áférést kell biztosítania a program forráskódjához.
A szivárgás helyének meghatározása
A probléma megoldása érdekében először azt kell azonosítanunk. A memóriaszivárgás felkutatásának alapvető lépései:
- Megerősítés : annak megállapítása, hogy történt-e szivárgás.
- A rendszermag módú memóriaszivárgás megkeresése : A rendszermag módú illesztőprogram összetevője által okozott szivárgás felkutatása .
- Felhasználói módú memóriaszivárgás megkeresése : A felhasználói módú illesztőprogram vagy alkalmazás által okozott szivárgás felkutatása .
Memóriaallokáció
Különböző módok vannak, amelyekben az alkalmazások lefoglalják a RAM-ot. Ha a felhasználás után a hely nem szabadul fel, a memória szivárgása bekövetkezik, függetlenül a felosztás módjától. Néhány általános kiosztási minta:
- HealAlloc függvény a halom memória lefoglalásához. A C / C ++ futásidejű ekvivalensek malloc és újszerűek.
- VirtualAlloc függvény az operációs rendszer közvetlen kiosztásához.
- Kernel32 API-k az alkalmazás kernelmemóriájának tárolására. Példa: CreateFile, CreateThread.
- User32 API-k és Gdi32 API-k.
A memória szivárgásának megakadályozása
Mindannyian tudjuk, hogy a megelőzés jobb, mint a gyógyítás, ezért íme néhány módszer a memória szivárgásának megakadályozására.
Monitoring szokások
Figyelnie kell az egyes programok és alkalmazások rendellenes RAM-használatát. A Windows Feladatkezelőbe léphet a CTRL + SHIFT + ESC billentyűkombinációval, és hozzáadhatja az oszlopokat, például a fogantyúkat, a felhasználói objektumokat, a GDI-objektumokat stb.
Ez segít az erőforrások használatának egyszerű ellenőrzésében.
Microsoft eszközök a memóriaszivárgások diagnosztizálására
Különböző eszközök diagnosztizálják a memóriaszivárgásokat a különféle allokációs módok esetében:
- Az Application Verifier diagnosztizálja a halomszivárgásokat.
- Az UMDH (a Windows hibakeresési eszközök egyik összetevője) a halom memória-allokációk figyelemmel kísérésével diagnosztizálja az egyes folyamatok szivárgását.
- Trace Capture a RAM használatának alapos elemzéséhez.
- Az Xperf is követi a halomallokációs mintákat.
- A CRT Debug Heap nemcsak a halomallokációkat követi nyomon, hanem kódolási gyakorlatokat is lehetővé tesz a szivárgások minimalizálása érdekében.
- A JavaScript memóriaszivárgás-érzékelő hibakereséssel tárolja a memóriaszivárgásokat a kódokban.
Használati tippek
- Használja a rendszermag HANDLE-jeit és más intelligens mutatókat a Win32 erőforrásokhoz és a halomallokációkhoz.
- Az ATL könyvtárból szerezzen be osztályokat az automatikus erőforrás-kezeléshez a kernel-kiosztásokhoz. A C ++ szabvány rendelkezik auto_ptr paranccsal a halomallokációkhoz .
- A COM interfész mutatóit az „intelligens mutatókba ” foglalja be a _com_ptr_t vagy a _bstr_t vagy a _variant_t segítségével .
- Figyelje a .NET kódot a rendellenes memóriahasználatra.
- Kerülje el a függvények többszörös kilépési útvonalát, hogy a legtöbb blokkban a funkció végére a kiosztások szabaddá váljanak.
- A natív kivételeket csak azután használhatja, hogy felszabadította az összes allokációt a _finally blokkban. Csomagolja az összes halmot és kezelje az allokációkat intelligens mutatókba a C ++ kivételek használatához.
- Mindig hívja meg a PropVariantClear függvényt, mielőtt újratelepítené vagy elvetné egy PROPVARIANT objektumot.
A memóriaszivárgások hibaelhárítása a Windows rendszerben
A memóriaszivárgások megelőzésének különböző módjaihoz hasonlóan a memóriaszivárgások megállításának számos módja van. De mielőtt elkezdené, ne felejtsen el először létrehozni egy rendszer-visszaállítási pontot.
1] Zárja be a folyamatokat és indítsa újra.
Ha úgy látja, hogy egy felesleges folyamat túl sok RAM-ot foglal el, a folyamatot a Feladatkezelőben fejezheti be. Újra kell indítania az eszközt, hogy a felszabadított terület rendelkezésre álljon más folyamatok számára. Újraindítás nélkül a memóriaszivárgás nem oldódik meg. A Runtime Broker egy olyan folyamat, amely hibákat tartalmaz a számítógép lelassítására. Próbáld meg, hogy csak ennek letiltása működik-e.
2] Memória diagnosztikai eszközök
A Windows beépített memória-diagnosztikai eszközének elérése:
- Mentsen meg minden fontos munkát.
- A Futtatás ablak megnyitásához nyomja meg a Win + R billentyűkombinációt .
- Írja be az mdsched.exe parancsot a Futtatás ablakba.
- Indítsa újra a számítógépet.
- Újraindítás után hajtsa végre az alapolvasást, vagy válassza a „ Speciális ” opciókat, például a „ Tesztmix ” vagy a „ Pass count ” lehetőséget.
- A teszt elindításához nyomja meg az F10 billentyűt.
Ezek továbbra is ideiglenes javítások.
3] Ellenőrizze az illesztőprogram frissítéseit
Az elavult illesztőprogramok memóriaszivárgást okoznak. Tartsa naprakészen az összes illesztőprogramot:
- Nyomja meg a Win + R gombot, és nyissa meg a Futtatás ablakot. Írja be a devmgmt.msc fájlt, és nyomja meg az Enter billentyűt. Ez eljut az Eszközkezelőhöz .
- Ellenőrizze az elavult illesztőprogramokat, és frissítse őket.
- Az esetlegesen lemaradt frissítéseket a Windows Update webhelyen találja.
Ez egyszerű volt.
4] Optimalizálja a teljesítményt
A Windows teljesítményének igazításával mindent kezelhet, beleértve a processzor ütemezését és a memóriahasználatot a memóriaszivárgások megakadályozására. Kovesd ezeket a lepeseket:
- Kattintson a jobb gombbal az „ Ez a számítógép ” elemre, és válassza a bal panelen az „ Speciális ” beállításokat.
- A „ Speciális ” lapon lépjen a „ Teljesítmény ” elemre , majd a „ Beállítások ” elemre .
- Jelölje be a „ Beállítás a legjobb teljesítményért ” lehetőséget, és kattintson az OK gombra .
- Indítsa újra é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] Tiltsa le az indításkor futó programokat
A problémás programok letiltása az egyetlen módja a memóriaszivárgás megszabadulásának. Nyissa meg a Feladatkezelőt, és tiltsa le a problémamegoldó programot. Ha nem tudja, mely programok okozzák a problémát, tegye ezt:
- Lépjen a „ Feladatkezelő ” oldalra .
- Lépjen az „ Indítás ” oldalra .
- Tiltsa le azokat az indító programokat, amelyeket alapértelmezés szerint nem kell futtatnia.
6] Defrag merevlemez
Bár a Windows 10 ezt automatikusan elvégzi az Ön számára, előfordulhat, hogy a teljesítmény optimalizálása érdekében időnként meg kell tennie a merevlemezek töredezettségmentesítését:
- Lépjen a „ This PC ” vagy a „ My Computer ” oldalra .
- Kattintson a jobb gombbal a rendszer merevlemezére (általában C: meghajtóra).
- Lépjen a „ Tulajdonságok ” menü „ Eszközök ” részéhez , és válassza az „ Optimalizálás ” lehetőséget.
- Válassza ki a töredezettségmeghajtót, majd válassza az „ Elemzés ” 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 már egyre bonyolultabb - de ne aggódj. A következőképpen törölheti az Oldalfájlt minden leállításkor:
- Írja be a regedit parancsot a Keresésben a Beállításszerkesztő elindításához.
- Írja be ezt az utat:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Módosítsa a ClearPageFileAtShutDown értékét '1' értékre .
- Mentse a módosításokat, és indítsa újra 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 optimalizálja a teljesítményt azáltal, hogy minimalizálja a rendszerindítási időt. Ez lehetővé teszi a Windows számára a RAM használatának kezelését. A Superfetch letiltása utáni élet nem kényelmes, de tegye meg, ha szükséges. Legalább próbáld egyedül ezt a problémát elkülöníteni:
- Keresse meg a services.msc fájlt, és lépjen a Services Manager oldalra.
- Keresse meg a „ Superfetch ” elemet , és kattintson a jobb gombbal a „ Tulajdonságok ” menüpont eléréséhez.
- Válassza a „ Stop ” lehetőséget.
- A legördülő menüből szintén „ tiltsa le ” a szolgáltatást.
- Indítsa újra a számítógépet, és ellenőrizze, hogy javult-e a teljesítmény.
Engedélyezze a Superfetch alkalmazást, 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 Defender-jét a rosszindulatú programok beolvasásához és megszüntetéséhez. Győződjön meg arról, hogy az antivírus frissítve van az operációs rendszer támogatásához, hogy végül ne váljon a memóriaszivárgás okává.
Minden megoldás, amire valaha szüksége lehet a memóriaszivárgások megtalálásához vagy megelőzéséhez, itt van. Tudjon meg többet az MSDN és a Microsoft memóriaszivárgásairól.
