Atrodiet un novērsiet atmiņas noplūdes operētājsistēmā Windows 10

Atmiņas noplūdes ir ievietošanu par resurss datorprogrammas dēļ bojātu atmiņas sadali. Tas notiek, ja netiek izmantota RAM vieta, kas netiek izmantota. Atmiņas noplūdi nedrīkst sajaukt ar kosmosa noplūdi, kas attiecas uz programmu, kurā tiek izmantots vairāk RAM nekā nepieciešams. Tiek uzskatīts, ka atmiņas noplūde sistēmā Windows 10/8/7 notika, kad atmiņa vienkārši nav pieejama, neskatoties uz to, ka tā netiek lietota.

Atmiņas noplūde operētājsistēmā Windows 10

Pirms sākat, jums jāzina, ka atmiņas noplūde ir programmatūras problēma atkļūdošanai - piemēram, Java, JavaScript, C / C ++, Windows uc. Fiziska RAM vai cietā diska nomaiņa nav nepieciešama.

Atmiņas noplūde operētājsistēmā Windows 10

Kāpēc tas ir slikti

Ir acīmredzams, ka atmiņas noplūde ir slikta, jo tā ir kļūda, sistēmas trūkums. Bet noskaidrosim, kā tieši tas ietekmē sistēmu:

  1. Tā kā atmiņa netiek atbrīvota pat tad, kad to nelieto, tā atmiņa tiek iztukšota.
  2. Atmiņas iztukšošana noveco programmatūru.
  3. Samazināta pieejamā atmiņa palielina reakcijas laiku un sliktu sistēmas darbību.
  4. Nepārbaudīta atmiņas noplūde galu galā var izraisīt lietojumprogrammas avāriju.

Lai identificētu atmiņas noplūdi, programmētājam ir jābūt piekļuvei programmas avota kodam.

Noplūdes atrašanās vieta

Lai atrisinātu problēmu, mums tā vispirms ir jāidentificē. Pamata darbības atmiņas noplūdes noteikšanai ir šādas:

  1. Apstiprinājums : nosakiet, vai ir notikusi noplūde.
  2. Kodola režīma atmiņas noplūdes atrašana: kodola režīma draivera komponenta izraisītas noplūdes atrašana.
  3. Lietotāja režīma atmiņas noplūdes atrašana: lietotāja režīma draivera vai lietotnes izraisītas noplūdes atrašana.

Atmiņas piešķiršana

Ir dažādi režīmi, kuros lietojumprogrammas piešķir RAM. Ja pēc izmantošanas vieta netiks atbrīvota, atmiņas noplūde notiks neatkarīgi no piešķiršanas veida. Daži izplatīti sadales modeļi ir:

  1. HealAlloc funkcija kaudzes atmiņas piešķiršanai. C / C ++ izpildlaika ekvivalenti ir malloc un jauni.
  2. VirtualAlloc funkcija tiešai piešķiršanai no OS.
  3. Kernel32 API, lai saglabātu lietotnes kodola atmiņu. Piemērs: CreateFile, CreateThread.
  4. User32 API un Gdi32 API.

Atmiņas noplūdes novēršana

Mēs visi zinām, ka profilakse ir labāka nekā ārstēšana, tāpēc šeit ir daži veidi, kā novērst atmiņas noplūdi.

Uzraudzības paradumi

Atmiņas noplūde operētājsistēmā Windows 10

Jums jāraugās, lai atsevišķas programmas un lietojumprogrammas nepietiekami izmantotu RAM. Jūs varat doties uz Windows uzdevumu pārvaldnieku, nospiežot CTRL + SHIFT + ESC un pievienojot kolonnas, piemēram, Rokturi, Lietotāja objekti, GDI objekti utt.

Tas palīdzēs jums viegli uzraudzīt resursu izmantošanu.

Microsoft rīki atmiņas noplūdes diagnosticēšanai

Dažādi rīki diagnosticē atmiņas noplūdes dažādiem piešķiršanas režīmiem:

  1. Application Verifier diagnosticē kaudzes noplūdes.
  2. UMDH (Windows atkļūdošanas rīku sastāvdaļa) diagnosticē atsevišķu procesu noplūdes, uzraugot kaudzes atmiņas sadalījumu.
  3. Trace Capture, lai veiktu rūpīgu RAM izmantošanas analīzi.
  4. Arī Xperf izseko kaudzes piešķiršanas modeļus.
  5. CRT atkļūdošanas kaudze ne tikai izseko kaudzes piešķiršanu, bet arī ļauj kodēšanas praksei samazināt noplūdes.
  6. JavaScript atmiņas noplūdes detektors atkļūdo atmiņas noplūdes kodos.

Lietošanas padomi

  1. Win32 resursiem un kaudzes piešķiršanai izmantojiet kodola HANDLE s un citus viedos rādītājus.
  2. Iegūstiet klases automātiskai resursu pārvaldībai kodola piešķiršanai no ATL bibliotēkas. C ++ standartam ir automātisks_ptr kaudzes piešķiršanai.
  3. Iekļaujiet COM saskarnes rādītājus “viedajos rādītājos ” ar _com_ptr_t vai _bstr_t vai _variant_t palīdzību .
  4. Pārraugiet .NET kodu, vai atmiņa tiek izmantota neparasti.
  5. Izvairieties no vairākiem izejas ceļiem funkcijām, lai līdz funkcijas beigām ļautu piešķīrumiem atbrīvoties no mainīgajiem lielākajā daļā bloku.
  6. Vietējos izņēmumus izmantojiet tikai pēc visu piešķīrumu atbrīvošanas _finally blokā. Lai izmantotu C ++ izņēmumus, aptiniet visus kaudzes un rīkojumu sadalījumus viedajos rādītājos.
  7. Pirms atkārtoti inicializēt vai izmest objektu PROPVARIANT, vienmēr izsauciet funkciju PropVariantClear.

Atmiņas noplūdes problēmu novēršana sistēmā Windows

Tāpat kā dažādie veidi, kā novērst atmiņas noplūdi, ir dažādi, kā apturēt atmiņas noplūdi. Bet pirms sākat, atcerieties vispirms izveidot sistēmas atjaunošanas punktu.

1] Aizveriet procesus un restartējiet.

Ja redzat, ka nevajadzīgs process aizņem pārāk daudz RAM, procesu varat pārtraukt uzdevumu pārvaldniekā. Jums būs jārestartē ierīce, lai atbrīvotā vieta būtu pieejama citiem procesiem. Bez restartēšanas atmiņas noplūdes problēma netiks atrisināta. Viens īpašs process, kurā ir kļūdas, lai palēninātu datoru, ir Runtime Broker. Izmēģiniet, vai tikai tā atspējošana darbojas.

2] Atmiņas diagnostikas rīki

Windows atmiņas diagnostika

Lai piekļūtu Windows iebūvētajam atmiņas diagnostikas rīkam:

  1. Saglabājiet visus svarīgos darbus.
  2. Nospiediet Win + R, lai atvērtu logu Palaist .
  3. Ierakstiet komandu mdsched.exe šajā Run logā.
  4. Restartējiet datoru.
  5. Pēc restartēšanas veiciet pamata skenēšanu vai dodieties uz opcijām “ Advanced ”, piemēram, “ Test mix ” vai “ Pass count ”.
  6. Nospiediet F10, lai sāktu testu.

Tie joprojām ir pagaidu labojumi.

3] Pārbaudiet, vai nav atjauninājumu draiveri

Atjaunināt draivera programmatūru

Novecojuši draiveri izraisa atmiņas noplūdi. Atjauniniet visus draiverus:

  1. Nospiediet Win + R un atveriet logu Run . Ierakstiet devmgmt.msc un nospiediet taustiņu Enter. Tas jūs aizvedīs uz ierīču pārvaldnieku .
  2. Pārbaudiet, vai nav novecojušu draiveru, un atjauniniet tos visus.
  3. Lai iegūtu atjauninājumus, kurus, iespējams, esat palaidis garām, skatiet Windows atjaunināšanu.

Tas bija vienkārši.

4] Optimizējiet veiktspēju

Pielāgojiet, lai sasniegtu vislabāko sniegumu

Windows pielāgošana veiktspējai pārvaldīs visu, ieskaitot procesora plānošanu un atmiņas lietošanu, lai apturētu atmiņas noplūdi. Veiciet šīs darbības:

  1. Ar peles labo pogu noklikšķiniet uz “ Šis dators ” un kreisajā rūtī atlasiet “ Papildu ” iestatījumus.
  2. Cilnē “ Papildu ” dodieties uz “ Veiktspēja ”, kam seko “ Iestatījumi ”.
  3. Pārbaudiet " Pielāgot par labāko sniegumu " un noklikšķiniet uz Labi .
  4. Restartējiet un pārbaudiet, vai problēma ir atrisināta.

Ja šis vienkāršais risinājums nedarbojās, izmēģiniet nākamo risinājumu.

5] Atspējojiet programmas, kas darbojas startēšanas laikā

Startēšanas programmas

Traucējošo programmu atspējošana ir vienīgais veids, kā atbrīvoties no atmiņas noplūdes problēmas. Dodieties uz uzdevumu pārvaldnieku un atspējojiet problēmu novēršanas programmu. Ja nezināt, kuras programmas rada problēmas, rīkojieties šādi:

  1. Dodieties uz ' Uzdevumu pārvaldnieks '.
  2. Pārejiet uz ' Startup '.
  3. Atspējojiet startēšanas programmas, kuras pēc noklusējuma nav jādarbina.

6] Defrag cietais disks

Diska defragmentēšana

Lai gan operētājsistēma Windows 10 to automātiski dara jūsu vietā, lai optimizētu veiktspēju, jums, iespējams, laiku pa laikam jāveic defragmentēšana:

  1. Pārejiet uz “ Šis dators ” vai “ Mans dators ”.
  2. Ar peles labo pogu noklikšķiniet uz sistēmas cietā diska (parasti C: disks).
  3. Sadaļā Rekvizīti dodieties uz Rīki un atlasiet Optimizēt .
  4. Atlasiet disku, lai defragētu, un atlasiet " Analizēt ".

Pēc jaunās sadrumstalotības restartējiet datoru.

7] ClearPage fails pēc izslēgšanas

Tagad tas kļūst sarežģīts - bet neuztraucieties. Lūk, kā notīrīt lapas failu katrā izslēgšanās reizē:

  • Ierakstiet regedit uz Meklēt, lai uzsāktu reģistra redaktoru.
  • Ievadiet šo ceļu:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager Atmiņas pārvaldība
  • Mainiet ClearPageFileAtShutDown vērtību uz “1”.
  • Saglabājiet izmaiņas un restartējiet ierīci.

Tas būtu jādara. Neaizmirstiet, ka jūsu izslēgšanas process prasīs nedaudz vairāk laika.

9] Atspējot Superfetch

Šis Windows pakalpojums optimizē veiktspēju, samazinot sāknēšanas laiku. Tas ļauj Windows pārvaldīt RAM izmantošanu. Dzīve pēc Superfetch atspējošanas nav ērta, taču dariet to, ja nepieciešams. Vismaz izmēģiniet to vien, lai izolētu problēmu:

  1. Meklējiet services.msc un dodieties uz Services Manager.
  2. Meklējiet “ Superfetch ” un ar peles labo pogu noklikšķiniet uz tā, lai pārietu uz “ Properties ”.
  3. Atlasiet “ Apturēt ”.
  4. Arī nolaižamajā izvēlnē ' Atspējot ' pakalpojumu.
  5. Restartējiet datoru un pārbaudiet, vai veiktspēja ir uzlabojusies.

Iespējojiet Superfetch, ja šis nedarbojās.

10] Pārbaudiet, vai nav ļaunprātīgas programmatūras

Lai skenētu un novērstu ļaunprātīgu programmatūru, izmantojiet trešās puses antivīrusu programmatūru vai Windows 10 iekšējo Windows Defender. Pārliecinieties, vai antivīruss ir atjaunināts, lai atbalstītu jūsu operētājsistēmu, lai tas galu galā nekļūtu par atmiņas noplūdes cēloni.

Katrs risinājums, kas jums kādreiz var būt nepieciešams, lai atrastu vai novērstu atmiņas noplūdi, ir tieši šeit. Jūs varat uzzināt vairāk par atmiņas noplūdēm MSDN un Microsoft.

Original text


Atmiņas noplūde operētājsistēmā Windows 10