Как найти и исправить утечку памяти в Windows 10/8/7

Как найти и исправить утечку памяти в Windows 10/8/7
Как найти и исправить утечку памяти в Windows 10/8/7

Утечка памяти является смещениями ресурса в компьютерной программе из — за ошибки распределения памяти. Это происходит, когда нераспространяемое место хранения RAM остается неизданным. Утечка памяти не следует путать с утечкой пространства, которая относится к программе, использующей больше ОЗУ, чем необходимо. Говорят, что утечка памяти в системе Windows 10/8/7 произошла, когда память просто недоступна, несмотря на то, что она не используется.

Утечка памяти в Windows 10

Прежде чем начать, вы должны знать, что утечка памяти — проблема с программным обеспечением для отладки — например, в Java, JavaScript, C / C ++, Windows и т. Д. Физическая замена RAM или жесткого диска не требуется.

Утечка памяти в Windows 10

Почему это плохо

Очевидно, что утечка памяти плохо, потому что это ошибка, недостаток в системе. Но давайте выясним, как именно это влияет на систему:

  1. Поскольку память не освобождается, даже когда она не используется, это приводит к истощению памяти.
  2. Исчерпание памяти приводит к старению программного обеспечения.
  3. Уменьшенная доступная память приводит к увеличению времени отклика и низкой производительности системы.
  4. Неконтролируемая утечка памяти может в конечном итоге привести к сбою приложения.

Чтобы идентифицировать утечку памяти, программист должен иметь доступ к исходному коду программы.

Поиск утечки

Чтобы решить проблему, нам нужно сначала ее идентифицировать. Основные шаги для обнаружения утечки памяти:

  1. Подтверждение : определение наличия утечки.
  2. Поиск утечки памяти в ядре: обнаружение утечки, вызванной компонентом драйвера ядра.
  3. Поиск утечки памяти в пользовательском режиме : обнаружение утечки, вызванной драйвером или приложением пользовательского режима.

Выделение памяти

Существуют разные режимы, в которых приложения распределяют ОЗУ. Если после использования пространство не освобождается, утечка памяти будет происходить независимо от способа выделения. Некоторые общие шаблоны распределения:

  1. Функция HealAlloc для распределения памяти кучи. Эквиваленты среды выполнения C / C ++ — это malloc и new.
  2. Функция VirtualAlloc для прямого выделения из ОС.
  3. API Kernel32 для хранения памяти ядра для приложения. Пример: CreateFile, CreateThread.
  4. API-интерфейсы User32 и API-интерфейсы Gdi32.

Предотвращение утечек памяти

Мы все знаем, что профилактика лучше, чем лечение, поэтому вот несколько способов предотвратить утечку памяти.

Мониторинг привычек

Мониторинг Утечка памяти в Windows 10

Вам нужно следить за ненормальным использованием ОЗУ отдельными программами и приложениями. Вы можете перейти в диспетчер задач Windows, нажав CTRL + SHIFT + ESC и добавить столбцы, такие как «Ручки», «Пользовательские объекты», «Объекты GDI» и т. Д.

Это поможет вам легко контролировать использование ресурсов.

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

Различные инструменты диагностируют утечки памяти для различных режимов распределения:

  1. Приложение Verifier диагностирует утечки кучи.
  2. UMDH (компонент средств отладки Windows) диагностирует утечки для отдельных процессов путем мониторинга распределения памяти кучи.
  3. Trace Capture для тщательного анализа использования ОЗУ.
  4. Xperf также отслеживает шаблоны распределения кучи.
  5. CRT Debug Heap не только отслеживает распределение кучи, но также позволяет методам кодирования минимизировать утечки.
  6. Детектор утечки памяти JavaScript отлаживает утечки памяти в кодах.

Советы по использованию

  1. Используйте ядро HANDLE 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] Закрыть процессы и перезапустить.

Если вы видите, что ненужный процесс занимает слишком много ОЗУ, вы можете завершить этот процесс в диспетчере задач. Вам необходимо перезапустить устройство, чтобы освобожденное пространство было доступно для использования другими процессами. Без проблемы с перезагрузкой памяти проблема не будет решена. Один конкретный процесс, который имеет ошибки для замедления работы ПК, — Runtime Broker. Попробуйте, если это отключит работу.

2] Инструменты диагностики памяти

Инструменты диагностики памяти

Чтобы получить доступ к встроенному инструменту диагностики памяти для Windows:

  1. Сохраните всю свою важную работу.
  2. Нажмите Win + R, чтобы открыть окно « Выполнить» .
  3. Введите команду mdsched.exe в окне « Запуск» .
  4. Перезагрузите компьютер.
  5. После перезапуска выполните базовое сканирование или перейдите к параметрам « Дополнительно », например « Test mix » или « Pass count ».
  6. Нажмите F10, чтобы начать тест.

Это временные исправления.

3] Проверка обновлений драйверов

Проверка обновлений драйверов

Устаревшие драйверы вызывают утечку памяти. Обновите все драйверы :

  1. Нажмите Win + R и откройте окно Run . Введите devmgmt.msc и нажмите Enter. Он перенесет вас в диспетчер устройств .
  2. Проверьте наличие устаревших драйверов и обновите их.
  3. Для обновлений, которые вы, возможно, пропустили, проверьте в Центре обновления Windows.

Это было просто.

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

Оптимизация производительности

Настройка Windows для производительности будет управлять всем, включая планирование процессоров и использование памяти, чтобы остановить утечку памяти. Следуй этим шагам:

  1. Щелкните правой кнопкой мыши на « Этот компьютер » и выберите « Дополнительно » на левой панели.
  2. На вкладке « Дополнительно » перейдите в « Производительность », а затем « Настройки ».
  3. Установите флажок « Настроить для лучшей производительности » и нажмите « ОК» .
  4. Перезагрузите и проверьте, не решена ли проблема.

Если это простое решение не сработало, попробуйте следующее решение.

5] Отключить программы, запущенные при запуске

Отключить программы, запущенные при запуске

Отключение проблемных программ — единственный способ избавиться от проблемы утечки памяти. Перейдите в диспетчер задач и отключите программу устранения неполадок. Если вы не знаете, какие программы создают проблемы, сделайте следующее:

  1. Перейдите в « Диспетчер задач ».
  2. Перейдите в « Запуск ».
  3. Отключите программы запуска, которые вам не нужно запускать по умолчанию.

6] Дефрагментация жесткого диска

Дефрагментация жесткого диска

Хотя Windows 10 делает это для вас автоматически, вам может потребоваться время от времени дефрагментировать жесткие диски, чтобы оптимизировать производительность:

  1. Перейдите в « Этот компьютер » или « Мой компьютер ».
  2. Щелкните правой кнопкой мыши системный жесткий диск (обычно это C: привод).
  3. Перейдите в раздел « Инструменты » в разделе « Свойства » и выберите « Оптимизировать ».
  4. Выберите диск для дефрагментации и выберите « Анализ ».

Перезагрузите компьютер после новой фрагментации.

7] Файл ClearPage при выключении

Сейчас он становится сложным, но не беспокойтесь. Вот как очистить файл страницы при каждом отключении:

  1. Введите regedit в Search для запуска редактора реестра.
  2. Введите этот путь: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  3. Измените значение ClearPageFileAtShutDown на «1».
  4. Сохраните изменения и перезагрузите устройство.

Это должно сделать это.

9] Отключить Superfetch

Эта служба Windows оптимизирует производительность, минимизируя время загрузки. Это позволяет Windows управлять использованием ОЗУ. Жизнь после отключения Superfetch не удобна, но сделайте это, если нужно. По крайней мере, попробуйте сделать это самостоятельно, чтобы изолировать проблему:

  1. Найдите services.msc и зайдите в диспетчер служб.
  2. Найдите « Superfetch » и щелкните его правой кнопкой мыши, чтобы перейти в « Свойства ».
  3. Выберите « Стоп ».
  4. Также « Отключить » сервис из выпадающего меню.
  5. Перезагрузите компьютер и проверьте, улучшена ли производительность.

Включите Superfetch, если этот файл не работает.

10] Проверить наличие вредоносных программ

Используйте антивирусное программное обеспечение сторонних производителей или собственный защитник Windows 10 для сканирования и устранения вредоносных программ. Убедитесь, что антивирус обновлен для поддержки вашей ОС, чтобы он не стал причиной утечки памяти.

Каждое решение, которое вам может понадобиться, чтобы найти или предотвратить утечку памяти, прямо здесь. 

0 I like it
0 I don't like it

Leave a Reply

Your email address will not be published. Required fields are marked *