Найдите и устраните утечки памяти в Windows 11/10
Утечка памяти(Memory Leak) — это неправильное размещение ресурсов в компьютерной программе из-за неправильного распределения памяти. Это происходит, когда неиспользуемая область ОЗУ остается незанятой. Утечку памяти не следует путать с утечкой пространства, которая относится к программе, использующей больше оперативной памяти(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(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(Windows Debugging Tools) ) диагностирует утечки для отдельных процессов, отслеживая выделение памяти в куче.
- Trace Capture для тщательного анализа использования оперативной памяти(RAM) .
- Xperf также отслеживает шаблоны распределения кучи.
- CRT Debug Heap не только отслеживает выделение кучи, но также позволяет использовать методы кодирования для минимизации утечек.
- JavaScript Memory Leak Detector отлаживает утечки памяти в коде.
Советы по использованию
- Используйте HANDLE ядра и другие интеллектуальные указатели для ресурсов Win32 и распределения кучи.
- Получите(Get) классы для автоматического управления ресурсами для выделения ядра из библиотеки ATL . Стандарт С++ имеет auto_ptr для распределения кучи.
- Инкапсулируйте(Encapsulate COM) указатели COM-интерфейса в «умные указатели» с помощью _com_ptr_t , (_variant_t)_bstr_t или _variant_t .
- Отслеживайте(Monitor) код .NET на предмет ненормального использования памяти.
- Избегайте(Avoid) множественных выходных путей для функций, чтобы освободить выделение переменных в большинстве блоков к концу функции.
- Используйте(Use) нативные исключения только после освобождения всех аллокаций в блоке _finally . Оберните(Wrap) все выделения кучи и дескрипторов в интеллектуальные указатели, чтобы использовать исключения 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(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 при завершении работы
Теперь это становится сложным, но не волнуйтесь. Вот как очищать файл подкачки при каждом завершении работы(clear the Page File at every shutdown) :
- Введите regedit в поле поиска(Search) , чтобы запустить редактор реестра(Registry Editor) .
- Введите этот путь:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
- Измените значение ClearPageFileAtShutDown на «1».( ClearPageFileAtShutDown to ‘1’.)
- Сохраните изменения и перезагрузите(Restart) устройство.
Это должно сделать это. Помните, что процесс выключения займет немного больше времени.
9] Отключить супервыборку
Эта служба Windows(Windows Service) оптимизирует производительность за счет минимизации времени загрузки. Это позволяет Windows управлять использованием оперативной памяти(RAM) . Жизнь(Life) после отключения Superfetch неудобна(Superfetch) , но сделайте это, если нужно. По крайней мере, попробуйте это в одиночку, чтобы изолировать проблему:
- Найдите services.msc и перейдите в диспетчер служб.
- Найдите « Superfetch » и щелкните его правой кнопкой мыши, чтобы перейти в « Свойства(Properties) ».
- Выберите « Стоп(Stop) ».
- Также « Отключить(Disable) » услугу из выпадающего меню.
- Перезагрузите компьютер и проверьте, улучшилась ли производительность.
Включите Superfetch, если это не сработало.
10] Проверьте наличие вредоносных программ
Используйте стороннее антивирусное программное обеспечение или встроенный в Windows 10 Защитник Windows(Windows Defender) для сканирования и устранения вредоносных программ. Убедитесь(Make) , что антивирус обновлен для поддержки вашей ОС, чтобы он не стал причиной утечки памяти.
Каждое решение, которое вам может когда-либо понадобиться для обнаружения или предотвращения утечек памяти, находится прямо здесь. Подробнее об утечках памяти можно прочитать в MSDN и Microsoft .
Related posts
Как открыть и прочитать Small Memory Dump файлы (DMP) в Windows 10
Как запустить Windows Memory Diagnostics Tool в Windows 11/10
Как увеличить Page File size или виртуальную память в Windows 10
Как вручную создать Crash Dump file в Windows 10
Explorer.exe High Memory or CPU usage в Windows 10
Как исправить Disk Signature Collision problem в Windows 10
Как использовать Alarms and Clocks app из Windows 10
Best бесплатно ISO Mounter software для Windows 10
CPU не работает на Full speed or capacity в Windows 11/10
Fix Microsoft Edge High Memory Usage в Windows 10
Как отключить Find My Device option в настройках Windows 10
Как создать резервную копию, Move, или Delete PageFile.sys на выключение в Windows 10
Fix Crypt32.dll не найден или отсутствует ошибка в Windows 11/10
Как очистить Memory Cache в Windows 10
Mail and Calendar app freezes, вылетает или не работает в Windows 11/10
HDMI playback Устройство не отображается в Windows 10
Как добавить Group Policy Editor на Windows 10 Home Edition
Включить Network Connections пока в Modern Standby на Windows 10
Что такое PPS file? Как конвертировать PPS на PDF в Windows 11/10?
Microsoft Edge Browser Tips and Tricks для Windows 10