Поиск и устранение утечек памяти в Windows 10/8/7

Оглавление:

Поиск и устранение утечек памяти в Windows 10/8/7
Поиск и устранение утечек памяти в Windows 10/8/7

Видео: Поиск и устранение утечек памяти в Windows 10/8/7

Видео: Поиск и устранение утечек памяти в Windows 10/8/7
Видео: Как удалить вирусы со своего компьютера ? - YouTube 2024, Май
Anonim

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

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

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

Image
Image

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

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

  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.

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

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

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

Image
Image

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

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

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

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

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

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

  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] Закрыть процессы и перезапустить.

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

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

Image
Image

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

  1. Сохраните всю свою важную работу.
  2. Нажмите Win + R для открытия Бежать окно.
  3. Введите команду mdsched.exe в Бежать окно.
  4. Перезагрузите компьютер.
  5. После перезапуска выполните базовое сканирование или перейдите к ' продвинутый'Варианты вроде' Испытательная смесь' или же ' Количество проходов ’.
  6. Нажмите F10 для начала теста.

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

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

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

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

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

Настройка Windows для производительности будет управлять всем, включая планирование процессоров и использование памяти, чтобы остановить утечку памяти. Следуй этим шагам:
Настройка Windows для производительности будет управлять всем, включая планирование процессоров и использование памяти, чтобы остановить утечку памяти. Следуй этим шагам:
  1. Щелкните правой кнопкой мыши на ' Этот ПК'И выберите' продвинутый'На левой панели.
  2. Под ' продвинутый', Перейдите к' Спектакль', с последующим ' настройки ’.
  3. Проверьте ' Отрегулируйте для лучшей производительности'И нажмите Хорошо.
  4. Перезагрузите и проверьте, не решена ли проблема.

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

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

Отключение проблемных программ - единственный способ избавиться от проблемы утечки памяти. Перейдите в диспетчер задач и отключите программу устранения неполадок. Если вы не знаете, какие программы создают проблемы, сделайте следующее:
Отключение проблемных программ - единственный способ избавиться от проблемы утечки памяти. Перейдите в диспетчер задач и отключите программу устранения неполадок. Если вы не знаете, какие программы создают проблемы, сделайте следующее:
  1. Идти к ' Диспетчер задач ’.
  2. Идти к ' Запускать ’.
  3. Отключите программы запуска, которые вам не нужно запускать по умолчанию.

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

Image
Image

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

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

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

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

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

  1. Тип смерзаться в разделе «Поиск» для запуска редактора реестра.
  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 для сканирования и устранения вредоносных программ. Убедитесь, что антивирус обновлен для поддержки вашей ОС, чтобы он не стал причиной утечки памяти.

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

Похожие сообщения:

  • Исправить ошибки остановки Windows или синий экран смерти
  • Почему Windows показывает меньше оперативной памяти, чем установлена?
  • Сделать Windows 10 Запустить, запустить, завершить работу быстрее
  • Ограничения физической памяти в файлах дампа сбоя для Windows 10/8/7
  • Сжатие памяти в Windows 10

Рекомендуемые: