A Memóriaszivárgás a számítógépes program erőforrásainak helytelen elhelyezése a hibás memóriaallokáció miatt. Akkor fordul elő, amikor a nem használt RAM-hely 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ória szivárgás szoftverhiba a hibakereséshez - például Java, JavaScript, C / C ++, Windows stb. A RAM vagy a merevlemez fizikai cseréje nem szükséges.
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, ha 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 a válaszidő megnöveléséhez és a rendszer gyenge teljesítményéhez vezet.
- 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ásához először azt kell azonosítanunk. A memóriaszivárgás felkutatásának alapvető lépései a következők:
- Megerősítés: Annak megállapítása, hogy történt-e szivárgás.
- Kernel módú memóriaszivárgás keresése: A rendszermag módú illesztőprogram-összetevő által okozott szivárgás felderítése.
- Felhasználói módú memóriaszivárgás megtalálása: Felhasználói módú illesztőprogram vagy alkalmazás által okozott szivárgás felkutatása.
Memória kiosztás
Különböző módok vannak, amelyekben az alkalmazások lefoglalják a RAM-ot. Ha a használat után nem szabadul fel a hely, 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.
Monitorozási szokások
Figyelnie kell az egyedi programok és alkalmazások rendellenes RAM-használatát. A Windows gomb megnyomásával léphet a Windows Feladatkezelőbe CTRL + SHIFT + ESC és adja hozzá az oszlopokat, mint a fogantyúk, a felhasználói objektumok, a GDI objektumok stb.
Ez segít az erőforrások használatának egyszerű nyomon követésében.
Olvas: Milyen típusú memória van a számítógépen?
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ást a különféle allokációs módoknál:
- 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áld a kernelt FOGANTYÚs és más intelligens mutatók a Win32 erőforrásokhoz és a halomallokációkhoz.
- Szerezzen be osztályokat az automatikus erőforrás-kezeléshez a kernel-kiosztásokhoz az ATL könyvtárból. A C ++ szabvány rendelkezik auto_ptr kupacok kiosztására.
- A COM interfész mutatóit az „intelligens mutatók” közé tömöríti a _com_ptr_t vagy _bstr_t vagy _változó_t.
- Figyelje a .NET kód a rendellenes memóriahasználathoz.
- Kerülje a függvények többszörös kilépési útvonalát, hogy a legtöbb blokkban a függvény végére a lefoglalások felszabaduljanak a változóktól.
- A natív kivételeket csak a _finally blokk összes kiosztásának felszabadítása után használja. Csomagolja az összes halmot és kezelje az allokációkat intelligens mutatókba a C ++ kivételek használatához.
- Mindig hívja a PropVariantClear funkciót, mielőtt újratelepítené vagy elvetné a 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 létezik. 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. Az egyik olyan folyamat, amely hibákat tartalmaz a számítógép lelassítására, a Runtime Broker. 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.
- nyomja meg Win + R hogy kinyissa a Fuss ablak.
- Írja be a parancsot mdsched.alkalmazás ban,-ben Fuss ablak.
- Indítsa újra a számítógépet.
- Újraindítás után hajtsa végre az alapellenőrzést, vagy menjen a 'Fejlett"opciók, mint"TesztmixvagyBérlések száma".
- nyomja meg F10 hogy elkezdje a tesztet.
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 Win + R és nyissa meg a Fuss ablak. típus devmgmt.msc és nyomja meg az Enter billentyűt. Elviszi a Eszközkezelő.
- Ellenőrizze az elavult illesztőprogramokat, és frissítse őket.
- Ha frissítéseket szeretne lemaradni, ellenőrizze a Windows Update webhelyet.
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 a 'gombraEz a PC'és válassza ki'Fejlett'beállításokat a bal oldali ablaktáblán.
- Alatt 'Fejlett'fül, menjen ide'Teljesítmény", majd a"Beállítások".
- Jelölje be 'Állítsa be a legjobb teljesítmény érdekébenés kattintson rendben.
- 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:
- Menj 'Feladatkezelő".
- Menj 'üzembe helyezés".
- 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:
- Menj 'Ez a PCvagyA számítógépem".
- Kattintson a jobb gombbal a rendszer merevlemezére (általában C: meghajtóra).
- Menj 'Eszközök„alatt”Tulajdonságok'és válassza ki'Optimalizálás".
- Válassza ki a töredezettségmeghajtót és válassza a 'Elemezze".
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ódjon. A következőképpen törölheti az Oldalfájlt minden leállításkor:
- típus regedit a keresésről a Rendszerleíróadatbázis-szerkesztő elindításához.
- Írja be ezt az utat:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Változtassa meg a ClearPageFileAtShutDown "1" -ig.
- 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 egyedül próbálkozzon a probléma elkülönítésével:
- Keresés szolgáltatások.msc és lépjen a Szolgáltatáskezelőhöz.
- Keres 'Superfetch"és a jobb egérgombbal kattintson a továbblépéshez"Tulajdonságok".
- KiválasztásÁlljon meg".
- Is 'Letiltás'a legördülő menüből.
- 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 átkutatásához és megszüntetéséhez. Győződjön meg arról, hogy az antivírus frissítve van-e 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. Az MSDN és a Microsoft memóriaszivárgásáról bővebben olvashat.