Пам'ять

Як знайти та виправити витоки пам'яті в Windows 10

Як знайти та виправити витоки пам'яті в Windows 10

A Витік пам'яті - це неправильне розміщення ресурсів у комп’ютерній програмі через неправильний розподіл пам’яті. Це трапляється, коли місце використання оперативної пам'яті, яке не використовується, залишається невиданим. Витік пам'яті не слід плутати з витоком простору, що стосується програми, що використовує більше оперативної пам'яті, ніж потрібно. Кажуть, що витік пам'яті в системі Windows 10/8/7 стався, коли пам'ять просто недоступна, незважаючи на те, що вона не використовується.

Витік пам'яті в Windows 10

Перш ніж почати, ви повинні знати, що витік пам'яті є проблемою програмного забезпечення для налагодження - наприклад, у Java, JavaScript, C / C ++, Windows тощо. Фізична заміна оперативної пам'яті або жорсткого диска не потрібна.

Чому це погано

Очевидно, що витік пам'яті є поганим, оскільки це помилка, недолік системи. Але давайте з’ясуємо, як саме це впливає на систему:

  1. Оскільки пам'ять не звільняється, навіть коли вона не використовується, це призводить до виснаження пам'яті.
  2. Виснаження пам'яті призводить до старіння програмного забезпечення.
  3. Скорочення доступної пам’яті призводить до збільшення часу відгуку та низької продуктивності системи.
  4. Неперевірений витік пам’яті може в підсумку призвести до збою програми.

Для того, щоб виявити витік пам'яті, програміст повинен мати доступ до вихідного коду програми.

Розташування витоку

Для того, щоб вирішити проблему, нам потрібно спочатку її визначити. Основні кроки для виявлення витоку пам’яті:

  1. Ствердження: Визначення, чи стався витік.
  2. Пошук витоку пам'яті в режимі ядра: Виявлення витоку, спричиненого компонентом драйвера режиму ядра.
  3. Пошук витоку пам'яті в користувацькому режимі: Виявлення витоків, спричинених драйвером або програмою користувацького режиму.

Виділення пам'яті

Існують різні режими, в яких програми виділяють оперативну пам’ять. Якщо після використання не звільнити місце, витік пам'яті відбуватиметься незалежно від способу виділення. Деякі загальні схеми розподілу:

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

Запобігання витоку пам’яті

Ми всі знаємо, що профілактика краща за лікування, тому ось кілька способів запобігти витоку пам’яті.

Моніторингові звички

Потрібно стежити за ненормальним використанням оперативної пам’яті окремими програмами та програмами. Ви можете перейти до диспетчера завдань Windows, натиснувши CTRL + SHIFT + ESC і додати стовпці, такі як Дескриптори, Об'єкти користувача, Об'єкти GDI тощо.

Це допоможе вам легко контролювати використання ресурсів.

Читайте: Які типи пам’яті в комп’ютері?

Інструменти Microsoft для діагностики витоків пам'яті

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

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

Поради щодо використання

  1. Використовуйте ядро РУЧКАs та інші розумні вказівники на ресурси Win32 та розподіл купи.
  2. Отримайте класи для автоматичного управління ресурсами для розподілу ядра з бібліотеки ATL. Стандарт С ++ має 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. Після перезапуску виконайте базове сканування або перейдіть доРозширений"такі варіанти"Тестова суміш'або'Кількість проходів'.
  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 ManagerMemory Management

Це повинно це зробити. Пам’ятайте, що процес вимкнення займе трохи більше часу.

9] Вимкнути Superfetch

Ця служба Windows оптимізує продуктивність, мінімізуючи час завантаження. Це дозволяє Windows керувати використанням оперативної пам'яті. Життя після вимкнення Superfetch не зручне, але робіть це, якщо потрібно. Принаймні спробуйте це самостійно, щоб усунути проблему:

  1. Пошук послуги.msc і перейдіть до менеджера служб.
  2. Шукати 'Супервибір'і клацніть правою кнопкою миші, щоб перейти до'Властивості'.
  3. Виберіть "Стій'.
  4. Також 'Вимкнути'послуга зі спадного меню.
  5. Перезавантажте ПК і перевірте, чи покращилася продуктивність.

Увімкніть Superfetch, якщо цей не працював.

10] Перевірте наявність зловмисного програмного забезпечення

Використовуйте стороннє антивірусне програмне забезпечення або власний захисник Windows 10 Windows 10 для сканування та усунення шкідливих програм. Переконайтесь, що антивірус оновлений для підтримки вашої ОС, щоб це не стало причиною витоку пам’яті.

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

Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...
5 найкращих аркадних ігор для Linux
В наш час комп’ютери - це серйозні машини, що використовуються для ігор. Якщо ви не можете отримати новий високий бал, ви зрозумієте, що я маю на уваз...
Битва за Веснот 1.13.6 Розробка випущена
Битва за Веснот 1.13.6, випущений минулого місяця, є шостим випуском розробки в 1.13.x, і це забезпечує низку вдосконалень, особливо до інтерфейсу кор...