Намерете и поправете течове на памет в Windows 11/10
Изтичането на памет(Memory Leak) е неправилно разположение на ресурси в компютърна програма поради неправилно разпределение на паметта. Това се случва, когато RAM местоположение, което не се използва, остава неосвободено. Изтичането на памет не трябва да се бърка с изтичане на пространство, което се отнася до програма, използваща повече RAM , отколкото е необходимо. Твърди се, че изтичане на памет в система с Windows 11/10/8/7 се е случило, когато паметта просто не е достъпна, въпреки че не се използва.
Течове на памет в Windows 11/10
Преди да започнете, трябва да знаете, че изтичането на памет(Memory) е софтуерен проблем за отстраняване на грешки – например в Java , JavaScript , C/C++, Windows и т.н. Не се изисква физическа подмяна на RAM или твърдия диск.
Защо е лошо
Очевидно е, че изтичането на памет е лошо, защото е грешка, грешка в системата. Но нека разберем как точно се отразява на системата:
- Тъй като паметта не се освобождава дори когато не се използва, това води до изчерпване на паметта.
- Изчерпването на паметта води до стареене на софтуера.
- Намалената налична памет води до увеличено време за реакция и лоша производителност на системата.
- Непроверено изтичане на памет може в крайна сметка да доведе до срив на приложение.
За да идентифицира изтичане на памет, програмистът трябва да има достъп до изходния код на програмата.
Локализация на теча
За да разрешим проблем, първо трябва да го идентифицираме. Основните стъпки за локализиране на теч на памет са:
- Потвърждение(Affirmation) : Определяне дали е възникнал теч.
- Намиране на изтичане на памет в режим на ядрото(Finding Kernel-mode memory leak) : Намиране на теч, причинен от компонент на драйвер в режим на ядрото.
- Намиране на изтичане на памет в потребителски режим(Finding User-mode memory leak) : Намиране на теч, причинен от драйвер или приложение за потребителски режим.
Разпределение на паметта
Има различни режими, в които приложенията разпределят RAM . Ако пространството не се освободи след употреба, изтичането на паметта ще възникне независимо от режима на разпределение. Някои често срещани модели на разпределение са:
- Функция HealAlloc(HealAlloc) за разпределяне на паметта в купчина. Еквивалентите на C/C++ по време на изпълнение са malloc и new.
- Функция VirtualAlloc(VirtualAlloc) за директно разпределение от ОС.
- API на Kernel32(Kernel32 APIs) за задържане на паметта на ядрото за приложението. Пример(Example) , CreateFile , CreateThread .
- API на User32 и API на Gdi32.
Предотвратете изтичане на памет в Windows
Всички знаем, че превенцията е по-добра от лечението, така че ето няколко начина да предотвратите изтичане на памет.
Навици за наблюдение
Трябва да следите за необичайно използване на RAM от отделни програми и приложения. Можете да отидете в Windows Task Manager , като натиснете CTRL+SHIFT+ESC и добавите колоните като Handles , User Objects , GDI Objects и т.н.
Това ще ви помогне лесно да наблюдавате използването на ресурсите.
Прочетете(Read) : Какви са видовете памет в компютъра?(What are the Types of Memory in a computer?)
Инструменти на Microsoft(Microsoft) за диагностициране на течове на памет
Различни инструменти диагностицират течове на памет за различни режими на разпределение:
- Application Verifier диагностицира течове на купчина.
- UMDH (компонент на Windows Debugging Tools ) диагностицира течове за отделни процеси, като наблюдава разпределението на паметта на купчина.
- Trace Capture за задълбочен анализ на използването на RAM .
- Xperf също проследява моделите за разпределяне на купчина.
- CRT Debug Heap не само проследява разпределянето на купчина, но също така позволява практиките за кодиране за минимизиране на течовете.
- JavaScript(JavaScript Memory Leak Detector) Demory Leak Detector отстранява грешки от течове на памет в кодове.
Съвети за употреба
- Използвайте HANDLE(HANDLE) на ядрото и други интелигентни указатели за ресурси на Win32 и разпределения на хеп.(Win32)
- Вземете(Get) класове за автоматично управление на ресурси за разпределения на ядрото от ATL библиотеката. C++ стандартът има auto_ptr за разпределение на хеп.
- Инкапсулирайте указателите на COM(Encapsulate COM) интерфейс в рамките на „интелигентни указатели“ с помощта на _com_ptr_t или _bstr_t или _variant_t .
- Наблюдавайте (Monitor).NET кода за необичайно използване на паметта.
- Избягвайте(Avoid) множество изходни пътища за функции, за да позволите на разпределенията да бъдат освободени от променливи в повечето блокове до края на функцията.
- Използвайте(Use) естествени изключения само след освобождаване на всички разпределения в блока _finally . Увийте(Wrap) всички разпределения на heap и манипулатори в интелигентни указатели, за да използвате изключения на C++.
- Винаги извиквайте функцията PropVariantClear , преди да инициализирате повторно или да отхвърлите обект PROPVARIANT .
Отстраняване(Troubleshoot) на проблеми с течове на памет в Windows
Точно както различните начини за предотвратяване на изтичане на памет, има различни начини за спиране на течове на памет. Но преди да започнете, не забравяйте първо да създадете точка за възстановяване на системата .
1] Затворете процесите и рестартирайте.
Ако видите, че ненужен процес заема твърде много RAM , можете да прекратите процеса в диспечера на задачите(Task Manager) . Ще трябва да рестартирате устройството, така че освободеното място да е достъпно за използване от други процеси. Без рестартиране(Restart) проблемът с изтичането на паметта няма да бъде решен. Един конкретен процес, който има грешки за забавяне на компютъра, е Runtime Broker . Опитайте дали само деактивирането на това работи.
2] Инструменти за диагностика на паметта
За достъп до вградения инструмент за диагностика на паметта(Memory Diagnostic Tool) за Windows:
- Запазете цялата си важна работа.
- Натиснете Win + R , за да отворите прозореца Run .
- Въведете командата mdsched.exe в прозореца Run .
- Рестартирайте компютъра.
- След рестартиране извършете основно сканиране или отидете на опциите „ Разширени(Advanced) “ като „ Тестов микс(Test mix) “ или „ Брой(Pass count) на паса “.
- Натиснете F10 , за да започнете теста.
Това все още са временни поправки.
3] Проверете за актуализации на драйвери
Остарелите драйвери причиняват течове на памет. Поддържайте всички драйвери актуализирани :
- Натиснете Win + R и отворете прозореца Run . Въведете devmgmt.msc и натиснете Enter . Ще ви отведе до диспечера(Device Manager) на устройствата .
- Проверете(Check) за остарели драйвери и ги актуализирайте всички.
- За актуализации, които може да сте пропуснали, проверете в Windows Update .
Това беше просто.
4] Оптимизиране на производителността
Настройването на Windows за производителност ще управлява всичко, включително планирането на процесора и използването на паметта, за да спре течовете на памет. Следвай тези стъпки:
- Щракнете с десния бутон върху „ Този компютър(This PC) “ и изберете „ Разширени(Advanced) “ настройки в левия панел.
- В раздела „ Разширени(Advanced) “ отидете на „ Изпълнение(Performance) “, последвано от „ Настройки(Settings) “.
- Поставете отметка „ Настройка за най-добра производителност(Adjust for best performance) “ и щракнете върху OK .
- Рестартирайте(Restart) и проверете дали проблемът е решен.
Ако това просто решение не работи, опитайте следващото решение.
5] Деактивирайте програмите(Programs) , които се изпълняват при стартиране(Startup)
Деактивирането на проблемните програми е единственият начин да се отървете от проблема с изтичане на памет. Отидете в диспечера на задачите(Task Manager) и деактивирайте програмата за проблеми. Ако не знаете кои програми създават проблеми, направете това:
- Отидете на „ Диспечер(Task Manager) на задачи “.
- Отидете на „ Стартиране(Startup) “.
- Деактивирайте стартиращите програми(Disable the startup programs) , които не е необходимо да стартирате по подразбиране.
6] Дефрагментирайте твърдия диск
Въпреки че Windows 10 прави това автоматично за вас, може да се наложи да дефрагментирате твърдите дискове от време на време, за да оптимизирате производителността:
- Отидете на „ Този компютър(This PC) “ или „ Моят компютър(My Computer) “.
- Щракнете с десния бутон върху(Right-Click) системния твърд диск (обикновено C: диск).
- Отидете на „ Инструменти(Tools) “ под „ Свойства(Properties) “ и изберете „ Оптимизиране(Optimize) “.
- Изберете устройството за дефрагментиране и изберете „ Анализ(Analyze) “.
Рестартирайте компютъра си след новата фрагментация.
7] ClearPage File при изключване
Сега става сложно – но не се притеснявайте. Ето как да изчистите файла на страницата при всяко изключване(clear the Page File at every shutdown) :
- Въведете regedit в Търсене(Search) , за да стартирате редактора на системния регистър(Registry Editor) .
- Въведете този път:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Променете стойността на ClearPageFileAtShutDown на '1'.( ClearPageFileAtShutDown to ‘1’.)
- Запазете промените и рестартирайте(Restart) устройството.
Това би трябвало да го направи. Не забравяйте, че вашият процес на изключване ще отнеме малко повече време.
9] Деактивирайте Superfetch
Тази услуга на Windows(Windows Service) оптимизира производителността, като минимизира времето за зареждане. Позволява на Windows да управлява използването на RAM . Животът(Life) след деактивиране на Superfetch не е удобен, но го направете, ако трябва. Поне опитайте това самостоятелно, за да изолирате проблема:
- Потърсете services.msc и отидете на Services Manager.
- Потърсете " Superfetch " и щракнете с десния бутон върху него, за да отидете на " Свойства(Properties) ".
- Изберете „ Спри(Stop) “.
- Също така „ Деактивирайте(Disable) “ услугата от падащото меню.
- Рестартирайте компютъра и проверете дали производителността се е подобрила.
Активирайте Superfetch, ако това не работи.
10] Проверете за злонамерен софтуер
Използвайте антивирусен софтуер на трета страна или вътрешния Windows Defender на Windows 10, за да сканирате и елиминирате зловреден софтуер. Уверете(Make) се, че антивирусната програма е актуализирана, за да поддържа вашата ОС, така че да не стане причина за изтичане на памет.
Всяко решение, от което може да се нуждаете, за да намерите или предотвратите изтичане на памет, е точно тук. Можете да прочетете повече за течовете на памет в MSDN и Microsoft .
Related posts
Как да отваряте и четете файлове с малък дъмп на паметта (dmp) в Windows 11/10
Как да стартирате инструмента за диагностика на паметта на Windows в Windows 11/10
Как да увеличите размера на файла на страницата или виртуалната памет в Windows 11/10
Как да създадете ръчно файл Crash Dump в Windows 11/10
Explorer.exe Високо използване на памет или процесор в Windows 11/10
Как да тествате уеб камера в Windows 11/10? Работи ли?
Как да проверите регистрационния файл за изключване и стартиране в Windows 11/10
Как да отворите системни свойства в контролния панел в Windows 11/10
Как да поправите течове в паметта на Windows 10
Microsoft Intune не се синхронизира? Принудително синхронизиране на Intune в Windows 11/10
Активирайте мрежовите връзки, докато сте в модерен режим на готовност на Windows 11/10
Какво е PPS файл? Как да конвертирате PPS в PDF в Windows 11/10?
PDF текстът изчезва при редактиране или запазване на файл в Windows 11/10
Как да сменяте твърди дискове в Windows 11/10 с Hot Swap
Какво представлява файлът Windows.edb в Windows 11/10
Как да използвате приложението Alarms and Clocks на Windows 11/10
Как да промените уеб камерата по подразбиране на компютър с Windows 11/10
Как да деактивирате опцията Find my Device в настройките на Windows 11/10
Как да покажете панела с подробности във File Explorer в Windows 11/10
Най-добрият безплатен софтуер за монтиране на ISO за Windows 11/10