Памет

Как да намерите и отстраните изтичане на памет в Windows 10

Как да намерите и отстраните изтичане на памет в Windows 10

A Изтичане на памет е неправилно разположение на ресурси в компютърна програма поради неправилно разпределение на паметта. Това се случва, когато местоположението на RAM, което не се използва, остава неиздадено. Изтичането на памет не трябва да се бърка с изтичане на пространство, което се отнася до програма, използваща повече RAM от необходимото. Изтичане на памет в Windows 10/8/7 система се казва, когато паметта просто не е достъпна, въпреки че не се използва.

Изтичане на памет в Windows 10

Преди да започнете, трябва да знаете, че изтичането на памет е софтуерен проблем за отстраняване на грешки - например в Java, JavaScript, C / C ++, Windows и т.н. Не е необходима физическа подмяна на RAM или твърд диск.

Защо е лошо

Очевидно е, че изтичането на памет е лошо, защото е грешка, недостатък в системата. Но нека разберем как точно влияе на системата:

  1. Тъй като паметта не се освобождава дори когато не се използва, това води до изчерпване на паметта.
  2. Изчерпването на паметта води до стареене на софтуера.
  3. Намалената налична памет води до увеличено време за реакция и лоша производителност на системата.
  4. Непроверено изтичане на памет в крайна сметка може да доведе до срив на приложение.

За да идентифицира изтичане на памет, програмистът трябва да има достъп до изходния код на програмата.

Намиране на теча

За да разрешим проблем, първо трябва да го идентифицираме. Основните стъпки за откриване на изтичане на памет са:

  1. Утвърждение: Определяне дали е имало теч.
  2. Намиране на изтичане на памет в режим на ядро: Намиране на теч, причинен от компонент на драйвера в режим на ядро.
  3. Намиране на изтичане на памет в потребителски режим: Намиране на теч, причинен от драйвер или приложение в потребителски режим.

Разпределение на паметта

Има различни режими, в които приложенията разпределят RAM. Ако след употреба не се освободи място, изтичането на памет ще се случи независимо от начина на разпределение. Някои често срещани модели на разпределение са:

  1. Функция HealAlloc за разпределение на купчина памет. Еквивалентите на време на изпълнение на C / C ++ са malloc и нови.
  2. Функция VirtualAlloc за директно разпределение от ОС.
  3. API на Kernel32 за задържане на паметта на ядрото за приложението. Пример, CreateFile, CreateThread.
  4. API на User32 и API на Gdi32.

Предотвратяване на изтичане на памет

Всички знаем, че превенцията е по-добра от лечението, така че ето няколко начина за предотвратяване на изтичане на памет.

Навици за наблюдение

Трябва да следите за необичайно използване на RAM от отделни програми и приложения. Можете да отидете в диспечера на задачите на Windows, като натиснете CTRL + SHIFT + ESC и добавете колоните като Handles, User Objects, GDI Objects и др.

Това ще ви помогне лесно да наблюдавате използването на ресурсите.

Прочети: Какви са видовете памет в компютъра?

Инструменти на Microsoft за диагностика на изтичане на памет

Различни инструменти диагностицират изтичане на памет за различни режими на разпределение:

  1. Проверката на приложенията диагностицира изтичане на купчина.
  2. UMDH (компонент на инструментите за отстраняване на грешки в Windows) диагностицира течове за отделни процеси чрез наблюдение на разпределението на купчина памет.
  3. Trace Capture за задълбочен анализ на използването на RAM.
  4. Xperf също проследява модели за разпределение на купчина.
  5. CRT Debug Heap не само проследява разпределението на купчината, но също така дава възможност на практики за кодиране да минимизират течовете.
  6. JavaScript Memory Leak Detector отстранява изтичането на памет в кодове.

Съвети за употреба

  1. Използвайте ядрото ДРЪЖКАs и други интелигентни указатели за Win32 ресурси и разпределение на купчина.
  2. Вземете класове за автоматично управление на ресурсите за разпределение на ядрото от библиотеката ATL. C ++ стандартът има auto_ptr за разпределение на купчина.
  3. Инкапсулирайте указателите за COM интерфейс в „интелигентни указатели“ с помощта на _com_ptr_t или _bstr_t или _variant_t.
  4. Наблюдавайте .NET код за необичайно използване на паметта.
  5. Избягвайте множество изходни пътища за функции, за да позволите на разпределенията да бъдат освободени от променливи в повечето блокове до края на функция.
  6. Използвайте естествени изключения само след освобождаване на всички разпределения в блока _finally. Опаковайте цялата купчина и обработвайте разпределения в интелигентни указатели, за да използвате C ++ изключения.
  7. Винаги се обаждайте на PropVariantClear функция преди реинициализиране или изхвърляне на PROPVARIANT обект.

Отстраняване на неизправности при изтичане на памет в Windows

Подобно на различните начини за предотвратяване на изтичане на памет, има различни начини за спиране на изтичането на памет. Но преди да започнете, не забравяйте първо да създадете точка за възстановяване на системата.

1] Затворете процесите и рестартирайте.

Ако видите, че ненужният процес заема твърде много RAM, можете да прекратите процеса в диспечера на задачите. Ще трябва да рестартирате устройството, така че освободеното пространство да е на разположение за използване от други процеси. Без рестартиране проблемът с изтичане на памет няма да бъде решен. Един конкретен процес, който има грешки за забавяне на компютъра, е Runtime Broker. Опитайте дали деактивирането само на това работи.

2] Диагностични инструменти за памет

За достъп до вградения инструмент за диагностика на памет за Windows:

  1. Запазете цялата си важна работа.
  2. Натиснете Win + R за да отворите Бягай прозорец.
  3. Въведете командата mdsched.exe в Бягай прозорец.
  4. Рестартирайте компютъра.
  5. След рестартиране извършете основно сканиране или отидете на 'Разширено„опции като“Тестова смес' или 'Брой пропуски'.
  6. Натиснете F10 за да започнете теста.

Това все още са временни поправки.

3] Проверете за актуализации на драйверите

Остарелите драйвери причиняват изтичане на памет. Поддържайте всички драйвери актуализирани:

  1. Натиснете Win + R и отворете Бягай прозорец. Тип devmgmt.msc и натиснете Enter. Ще ви отведе до Диспечер на устройства.
  2. Проверете за остарели драйвери и ги актуализирайте всички.
  3. За актуализации, които може да сте пропуснали, проверете в Windows Update.

Това беше просто.

4] Оптимизиране на производителността

Регулирането на Windows за производителност ще управлява всичко, включително планирането на процесора и използването на паметта, за да спре изтичането на памет. Следвай тези стъпки:

  1. Щракнете с десния бутон върху „Този компютър„и изберете“Разширено'настройки в левия прозорец.
  2. Под 'Разширено„раздел, отидете на“производителност', следван от 'Настройки'.
  3. ПроверетеНастройте за най-добро представянеи щракнете Добре.
  4. Рестартирайте и проверете дали проблемът е решен.

Ако това просто решение не даде резултат, опитайте следващото решение.

5] Деактивирайте програмите, работещи при стартиране

Деактивирането на обезпокоителните програми е единственият начин да се отървете от проблема с изтичането на памет. Отидете в диспечера на задачите и деактивирайте програмата за създаване на проблеми. Ако не знаете кои програми създават проблем, направете следното:

  1. Отидете наДиспечер на задачите'.
  2. Отидете наЗапочвам'.
  3. Деактивирайте стартовите програми, които не е необходимо да стартирате по подразбиране.

6] Дефрагментирайте твърдия диск

Въпреки че Windows 10 прави това за вас автоматично, може да се наложи да правите дефрагментиране на твърдите дискове от време на време, за да оптимизирате производителността:

  1. Отидете наТози компютър' или 'Моя компютър'.
  2. Щракнете с десния бутон на мишката върху системния твърд диск (обикновено C: устройство).
  3. Отидете наИнструменти"под"Имоти„и изберете“Оптимизирайте'.
  4. Изберете устройството за дефрагментиране и изберете 'Анализирам'.

Рестартирайте компютъра си след новата фрагментация.

7] ClearPage файл при изключване

Сега се усложнява - но не се притеснявайте. Ето как да изчистите файла на страницата при всяко изключване:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerУправление на паметта

Това трябва да го направи. Не забравяйте, че процесът ви на изключване ще отнеме малко повече време.

9] Деактивирайте Superfetch

Тази услуга на Windows оптимизира производителността, като минимизира времето за зареждане. Позволява на Windows да управлява използването на RAM. Животът след деактивиране на Superfetch не е удобен, но го направете, ако трябва. Опитайте поне това, за да изолирате проблема:

  1. Търсене услуги.msc и отидете в Service Manager.
  2. ПотърсетеSuperfetch„и щракнете с десния бутон, за да отидете на“Имоти'.
  3. Изберете „Спри се'.
  4. Също 'Деактивирайте'услугата от падащото меню.
  5. Рестартирайте компютъра и проверете дали производителността се е подобрила.

Активирайте Superfetch, ако този не работи.

10] Проверете за злонамерен софтуер

Използвайте антивирусен софтуер на трета страна или вътрешен Windows Defender на Windows 10, за да сканирате и премахнете злонамерен софтуер. Уверете се, че антивирусната програма е актуализирана, за да поддържа вашата операционна система, за да не се окаже причината за изтичането на памет.

Всяко решение, което някога може да ви потрябва за намиране или предотвратяване на изтичане на памет, е точно тук. Можете да прочетете повече за изтичане на памет в MSDN и Microsoft.

Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...
Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...
Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...