top 20 memory leak detection tools
Перелік та порівняння найпопулярніших засобів виявлення та витоків пам'яті та засобів управління для Java, JavaScript, C, C ++, Visual Studio у системах Linux, Windows та Android:
Цей підручник познайомить вас з новою концепцією, яка є нічим іншим, як Управління витоками пам'яті .
Наші системні програми, як правило, отримують деякі проблеми з пам'яттю під час роботи на машинах, що в свою чергу може спричинити руйнування розподілу пам'яті.
Витік пам'яті погіршує продуктивність системи, зменшуючи обсяг пам'яті, доступний для кожної програми у вашій системі. Ці проблеми з пам'яттю, як правило, визначаються та вирішуються програмістами, які отримують доступ до вихідного коду програмної системи.
моделі життєвого циклу розробки програмного забезпечення
Сучасні операційні системи сьогодні пристосовані до проблем з пам’яттю. Вони миттєво зменшують споживання пам'яті та звільняють пам’ять, зайняту програмами, коли вона закрита.
У цьому підручнику ми розглянемо, чим саме пов’язаний витік пам’яті, і як боротися з його інструментами.
Що ви дізнаєтесь:
- Найкращі інструменти виявлення та витоку пам'яті
- # 1) GCeasy
- # 2) Eclipse MAT
- # 3) Memcheck від Valgrind
- # 4) GlowCode
- # 5) AQTime від Smartbear
- # 6) WinDbg
- # 7) BoundsChecker
- # 8) Делекер
- # 9) Доктор Пам'ять
- # 10) Intel Inspector XE
- # 11) Страхуємо ++
- # 12) Візуальний детектор витоків для Visual C ++ 2008-2015
- # 13) Профілізатор Visual Studio
- # 14) Мтунер
- # 15) Детектор витоків Windows
- # 16) Адреса санітарного засобу (A San)
- # 17) GCViewer
- # 18) Сливи
- # 19) .NET Validator Memory
- # 20) Валідатор пам'яті C ++
- # 21) Динатрас
- Додаткові засоби витоку пам'яті
- Висновок
- Рекомендована література
Що таке витік пам'яті?
# 1) Коли комп’ютерна програма без потреби використовує пам’ять і розподіляє її неправильно, в кінцевому підсумку це спричиняє витік пам’яті в системі.
# два) Іноді система не звільняє небажане виділення пам'яті, оскільки не звільняла пам'ять навіть після закриття програми чи програми.
# 3) Коли програма споживає більше фактичної пам'яті, як результат, виникають проблеми з пам’яттю та уповільнення продуктивності системи.
# 4) З точки зору об'єктно-орієнтованого програмування, якщо об'єкт зберігається в пам'яті, але недоступний за допомогою програмного коду (Визначено об'єкт та виділено пам'ять, але все одно ми отримуємо помилку, яка заявляє, що об'єкт не визначений).
# 5) Існують деякі мови програмування, такі як C і C ++, які не підтримують автоматичний збір сміття неявно і можуть створювати такі проблеми з витоками пам'яті під час роботи над ними (Java використовує процес збору сміття для боротьби з витоком пам'яті).
# 6) Витік пам’яті знижує продуктивність системи, зменшуючи обсяг доступної пам’яті, збільшуючи об’єм обробки даних і, зрештою, спричиняючи збій системи або уповільнення.
# 7) Керування витоками пам'яті - це механізм, який працює в операційній системі для динамічного розподілу пам'яті та вивільнення, коли він не використовується.
Типи витоків пам'яті
Витоки пам'яті можна розділити на кілька типів, і деякі з них пояснюються нижче.
- Учасник, що витік: Виділена пам'ять для члена класу вивільняється до того, як клас буде знищений.
- Витік глобальної пам'яті: Витікає пам’ять, яка не є частиною створеного класу, але може використовуватися різними функціями та методами.
- Витік статичної пам'яті: Витікає пам’ять, яка присвячена функції, визначеній створеним класом.
- Витік віртуальної пам'яті: Коли базовий клас не оголошений як віртуальний, тоді деструктори для похідного об'єкта не можуть бути викликані.
- Виклик неправильного посередника.
Управління витоками пам'яті
# 1) Витік пам'яті зберігається, коли немає посилання на виділення пам'яті.
# два) Такі витоки пам’яті призводять до того, що програма запускається більше очікуваного часу і споживає зайву пам’ять, безперервно працюючи у фоновому режимі або на сервері.
# 3) Переносні пристрої в більшій мірі страждають від витоків пам’яті, оскільки вони містять менший обсяг пам’яті та зменшують обробну здатність пристрою.
# 4) Ми можемо взятиПрикладсистеми управління витоками пам'яті .NET, наприклад,
- CLR (Common Language Runtime) дбає про розподіл ресурсів у .NET і звільняє їх.
- .NET підтримує 3 типи виділення пам'яті, такі як:
- Стек: Зберігає локальні змінні та параметри методу. Посилання на кожен створений об'єкт зберігається у Stack.
- Некерована купа: Некерований код розподілить об'єкт у некерованому стеку.
- Керована купа: Керований код розподілить об'єкт у керованому стеку.
# 5) Збирач сміття перевіряє об’єкти, які не використовуються, і після виявлення їх видаляє Смітник.
# 6) Garbage Collector управляє деревом або графікоподібною структурою, щоб перевірити коріння програми для кожного прямо чи опосередковано доступного об’єкта, і якщо будь-які об’єкти, які відсутні, знайдені, він просто поміщає їх у збір сміття.
Тепер ми розглянемо деякі популярні засоби управління витоками пам'яті, які широко використовуються для управління витоками пам'яті.
******************
= >> Зв'яжіться з нами запропонувати список тут.
*****************
Найкращі інструменти виявлення та витоку пам'яті
Нижче наведено перелік найбільш часто використовуваних засобів виявлення та управління витоками пам'яті.
# 1) GCeasy
- Цей безкоштовний інструмент швидко вирішує проблеми з пам'яттю і відомий як чудовий аналізатор пам'яті.
- Це перший інструмент аналізу журналу збирання сміття, який керується машиною.
- Також підтримує всі журнали Android GC, використовує алгоритм машинного навчання для виявлення проблем із пам'яттю, а також повідомляє про майбутні проблеми.
- Автоматичне виявлення проблем, миттєвий онлайн-аналіз GC, уніфікований аналіз реєстрації GC - деякі з важливих особливостей цього інструменту.
Клацніть тут перейти на офіційний сайт GCeasy.
# 2) Eclipse MAT
- Eclipse MAT відомий як швидкий і розроблений Java Heap Analyzer.
- Цей інструмент допомагає зменшити споживання пам'яті та виявити витоки пам'яті.
- Створює автоматичні звіти, генеруючи інформацію про помилку, яка перешкоджає збиральнику сміття збирати об'єкти.
- Основна увага цього інструменту залишається на великому споживанні пам’яті та помилках поза пам'яттю.
- Цей проект поєднує з Eclipse Photon, Eclipse Oxygen, Neon, Kepler тощо.
Клацніть тут перейти на офіційний сайт Eclipse MAT.
# 3) Memcheck від Valgrind
- Memcheck може виявити такі проблеми з пам'яттю на основі malloc, нових, безкоштовних та видалити виклики пам'яті:
-
- Неініціалізована пам’ять
- Втрачені покажчики
- Використання звільненої пам'яті
- Доступ до невідповідних областей у стосі
-
- Він автоматично перевіряє та спрямовує параметри, де б вони не були визначені.
- Memcheck від Valgrind - комерційне програмне забезпечення для виявлення помилок пам'яті.
- Корисно виявляти помилки пам’яті, які трапляються в C та C ++.
- Крім того, Memcheck перевіряє, чи буфер, визначений програмою, адресований чи ні.
- Memcheck веде відстеження блоків купи, щоб розпізнати невільний блок після виходу з програми.
Клацніть тут перейти на офіційний сайт Memcheck.
# 4) GlowCode
- GlowCode - це спеціальний комерційний аналізатор продуктивності та пам'яті в реальному часі для Windows та .NET Framework.
- GlowCode визначає витоки пам'яті в запущених програмах, написаних мовою, сумісною з C ++, C # або NET.
- Він також перевіряє потік продуктивності, охоплення коду та надмірне споживання пам'яті.
- Підтримує Windows 10 та Windows Server 2016 та забезпечує раннє виявлення проблем із продуктивністю та пам'яттю в працюючій системі.
- Підтримує власний, керований та змішаний код.
Клацніть тут перейти на офіційний сайт GlowCode.
# 5) AQTime від Smartbear
- AQTime - це власний інструмент Smartbear, який підтримує Delphi, C #, C ++, .NET, Java тощо.
- Виявляє витоки пам’яті, вузькі місця в роботі та прогалини в покритті коду в системі додатків.
- Ефективно аналізує інформацію про складну пам’ять та продуктивність для виявлення помилки з першопричиною.
- Найшвидший підхід до виявлення витоків пам'яті, розривів у покритті коду та вузьких місць у роботі.
- Дельфі-аналіз програми 'зверху вниз' для виявлення пам'яті та витоку ресурсів.
Клацніть тут перейти на офіційний сайт AQTime.
# 6) WinDbg
- Windbg для Windows використовується для виявлення дампів пам'яті ядра та вивчення реєстру ЦП.
- Він поставляється в іншій збірці для пристроїв Windows, веб- і настільних додатків.
- Особливість ідентифікації дампів аварійного завершення в режимі користувача відома як „Налагодження після повідомлення“.
- Ви можете розгорнути розширення DLL для налагодження середовища виконання командної мови (CLR).
- Windbg постачається із попередньо завантаженим файлом Ext.dll, який використовується як стандартне розширення налагоджувача Windows.
Клацніть тут перейти на офіційний сайт Windbg.
# 7) BoundsChecker
- Це власний інструмент для перевірки пам’яті та API для перевірки програмного забезпечення на C ++.
- Є два ActiveCheck і FinalCheck, ActiveCheck виконується проти заявки та FinalCheck використовується для перевірки інструментальної форми системи.
- ActiveCheck може виявляти витоки пам'яті за допомогою моніторингу викликів API та COM.
- FinalCheck має функції ActiveCheck, а також можливість виявлення переповнення буфера та невизначеної пам'яті.
- Виявлення перевитрати пам'яті - найкраща функція, якою відомий BoundsChecker.
Клацніть тут перейти на офіційний сайт BoundsChecker.
# 8) Делекер
- Deleaker - це самостійний власний інструмент виявлення витоків пам'яті, який також використовується як розширення Visual C ++.
- Виявляє витоки пам'яті в купі та віртуальній пам'яті, а також легко інтегрується з будь-якою IDE.
- Автономна версія налагоджує програму для відображення поточного розподілу об’єктів.
- Підтримує всі 32 - розрядні, а також 64 - розрядні системи та повністю інтегровані з Visual Studio.
- Створює розширені звіти та експортує кінцевий результат до XML.
Клацніть тут перейти на офіційний сайт Deleaker.
# 9) Доктор Пам'ять
- Dr. Memory - це безкоштовний інструмент моніторингу пам’яті для Windows, Linux та Mac.
- Цей інструмент здатний ідентифікувати неініціалізовану та неадресовану пам’ять та звільнену пам’ять.
- Доктор Меморі визначає 3 типи помилок:
-
-
- Ще - доступне місце: пам’ять, до якої можна отримати доступ додатком.
- Витік: пам’ять, недоступна додатком.
- Можливий витік: Пам'ять, до якої можна дістатися за допомогою покажчиків.
-
-
- Крім того, він визначає два типи витоків, таких як a Прямий і Непрямі витік.
Клацніть тут перейти на офіційний сайт Deleaker.
# 10) Intel Inspector XE
- Цей фірмовий інструмент допомагає виявляти витоки пам'яті на ранніх термінах та допомагає зменшити витрати на усунення витоків пам'яті.
- Відомий як налагоджувач помилок для програм C, C ++, що працюють у Windows та Linux без використання спеціального компілятора.
- Він також доступний у складі Intel Parallel Studio XE та Intel System Studio.
- Intel Inspector XE виконує статичний та динамічний аналіз для виявлення першопричини витоків пам'яті.
- Динамічний аналіз виявляє складні основні причини витоків пам'яті, які не виявляються за допомогою статичного аналізу.
- Він виявляє пошкоджену пам'ять, нелегальний доступ до пам'яті, неініціалізовану пам'ять і невідповідну пам'ять тощо.
Клацніть тут перейти на офіційний сайт Intel Inspector XE.
# 11) Страхуємо ++
- Parasoft Insure ++ - це власний налагоджувач комерційної пам'яті для C / C ++.
- Автоматично виявляє неточні, пов’язані з масивами порушення, нерозподілену пам’ять.
- Здатний виконати трасування стека, коли відбувся фактичний витік.
- Для набору перевіреного коду Insure ++ виробляє лінійну послідовність кодів та послідовність перехідних кодів.
Клацніть тут перейти на офіційний сайт Insure ++.
# 12) Візуальний детектор витоків для Visual C ++ 2008-2015
- Visual Leak Detector - це безкоштовний інструмент виявлення витоків пам'яті з відкритим кодом для C / C ++.
- Швидко діагностує витоки пам’яті в додатку С ++ та вибирає модуль, який потрібно виключити із витоку пам’яті.
- Visual C ++ забезпечує вбудоване виявлення витоків пам'яті, а також повний набір блоків, що просочилися.
- Налаштовувані та докладні звіти про витік пам'яті - найкраща особливість цього інструменту.
- Дозволяє повністю задокументований вихідний код для бібліотеки.
Клацніть тут для переходу до гоe Візуальний детектор витоків Офіційний сайт.
# 13) Профілізатор Visual Studio
- Visual Studio постачається із засобом використання пам'яті, який допомагає виявити витоки пам'яті та неефективну пам'ять.
- Цей інструмент використовується для настільних програм, програм ASP.NET та Windows.
- Ви можете робити знімки керованої та власної пам'яті, а також аналізувати окремі знімки, щоб зрозуміти вплив об’єкта на пам’ять.
- Ви можете використовувати кілька знімків, щоб знайти першопричину надмірного використання пам'яті.
- Дозволяє повністю задокументований вихідний код для бібліотеки.
Клацніть тут для переходу до гоe Офіційний сайт Visual Studio Profiler.
# 14) Мтунер
- Mtuner - це інструмент пошуку витоків пам'яті, який використовується для додатків Windows та PlayStation.
- Надає додаткові функціональні можливості для профілювання пам'яті.
- Mtuner може обробляти кількість розподілів в секунду за допомогою лінійного масштабування продуктивності.
- Mtuner поставляється з профілюванням на основі командного рядка, що корисно для відстеження щоденних змін у використанні пам'яті.
Клацніть тут для переходу до гоe Mtuner Офіційний сайт.
# 15) Детектор витоків Windows
- Windows Leak Detector - це інструмент виявлення витоків пам'яті для програми Windows.
- Деякі основні детектори витоків Windows:
-
-
- Вихідний код не потрібен, і якщо він є, то вимагає менших змін.
- Може аналізувати будь-яку програму Windows, написану будь-якою мовою.
- Ефективний і найкраще підходить для застосування, розробленого за циклічним малюнком.
-
-
- Цей інструмент постійно перебуває у розробці і все ще має деякі обмеження:
-
-
- Ви можете керувати лише одним окремим процесом за раз, у майбутньому буде додано функцію міжпроцесорного спілкування.
- Він аналізує лише функції HeapAlloc, HeapRealloc та HealFree.
-
-
Розробники системи працюють над додаванням додаткових функцій пам'яті, таких як HeapCreate.
Клацніть тут для переходу до гоe Офіційний сайт Windows Detector Detector.
# 16) Адреса санітарного засобу (A San)
- Цей інструмент з відкритим кодом призначений для виявлення витоків пам'яті в програмі C / C ++.
- Найшвидший інструмент складається з модуля інструментарію компілятора та бібліотеки виконання.
- Цей інструмент виявляє переповнення буфера кучі та стеку та витоки пам'яті.
- LeakSanitizer інтегрований з AddressSanitizer, який виконує роботу з виявлення витоків пам'яті.
- За допомогою LeakSanitizer ми можемо вказати інструкцію ігнорувати деякі витоки пам'яті, надсилаючи її в окремий файл придушення.
- Цей інструмент підтримується в Linux, Mac, OS X, Android та iOS Simulator.
Клацніть тут для переходу до гоe AddressSanitizer Офіційний сайт.
# 17) GCViewer
- GCViewer - це безкоштовний інструмент, створений IBM, HP, Sun Oracle та BEA JVM.
- Цей інструмент використовується для аналізу та аналізу файлів журналу GC.
- Ви можете генерувати дані у форматі CSV як програму електронних таблиць.
- Це працює на багатослівному збиранні сміття. Багатослівний збір сміття коротше:
-
- Генерування збору сміття на основі подій для кожної операції.
- Вихідний детальний збір сміття містить ідентифікатор приросту та місцеву мітку часу.
-
Клацніть тут для переходу до гоe Офіційний сайт GCViewer.
# 18) Сливи
питання, які слід задати бізнес-аналітику
- Це власний комерційний інструмент, який використовується для перевірки витоків пам’яті та збору сміття в додатку JVM.
- Plumbr базується на двох важливих модулях, таких як Агент та Портал.
- Агент підтримує JVM і надсилає на Портал інформацію про збір сміття та витік пам'яті.
- Ви можете побачити інформацію про використання пам’яті та купу на порталі.
- Інструмент використовує алгоритм виявлення, який базується на аналізі даних про ефективність.
Клацніть тут для переходу до гоe Plumbr Офіційний сайт.
# 19) .NET Validator Memory
- .NET Memory Validator - це комерційний аналізатор витоків пам'яті, профайлер пам'яті, який використовується для розробки програмного забезпечення та забезпечення якості.
- Відомий як найшвидший спосіб відстеження кількох розподілів пам'яті, що забезпечує безліч аналізів, таких як:
-
- Асигнування: Відображає кольорову статистику розподілу на основі класу та
метод, визначений для розподілу функції. - Об'єкти: Перегляд об’єкта відображає виділені кольором об’єкти та виділення пам’яті
статистика запущених додатків. - Покоління: Відображає кількість об’єктів на тип об’єкта для кожного об’єкта
генерація, виділена додатком. - Пам'ять: Перегляд пам'яті відображає поточний об'єкт з інформацією про
тип об’єкта, розмір виділення та стек викликів, мітка часу. - Аналіз: У цьому вікні відображається використання пам'яті.
- Асигнування: Відображає кольорову статистику розподілу на основі класу та
-
- Основні функції цього інструменту включають виявлення витоків пам'яті, обробку витоків пам’яті, проведення регресійних тестів для виявлення витоків пам’яті.
- Валідатор пам’яті .NET сумісний з будь-якою версією .NET framework та CLR.
- Простий у використанні, настроюваний, потужний та багатоцільовий інструмент для виявлення витоків пам'яті.
Клацніть тут для переходу до гоe. Офіційний сайт валідатора пам'яті .NET.
# 20) Валідатор пам'яті C ++
- Так само, як .NET Validator Memory, цей інструмент також є комерційним детектором та аналізатором витоків пам'яті.
- Програма перевірки пам’яті C ++ надає декілька аналізів, таких як:
-
- Пам'ять: Відображає інформацію про виділену та витоку пам’яті та відстежує повідомлення про помилки. Дані відображаються у структурі дерева, яку можна вибрати та відфільтрувати.
- Об'єкти: Показує статистику об’єктів із типом об’єкта та виділеними, вивіленими та перерозподіленими об’єктами.
- Покриття: У цьому поданні надається інформація про використання пам'яті. Інструмент постачається з фільтрами, які видаляють сторонні файли.
-
- Засіб автоматичного злиття допомагає об'єднати кілька статистичних даних із декількох аналітичних даних, щоб сформувати складне покриття для набору тестів регресії.
- Окрім цих статистичних даних, інструмент надає програму 'Хронологія, точка доступу', 'Розміри' та 'Аналіз'.
- Потужний та настроюваний інструмент, сумісний з Microsoft C та C ++, Intel C ++ тощо.
Клацніть тут для переходу до гоe C ++ Memory Validator Офіційний сайт.
# 21) Динатрас
- Dynatrace - це комерційний інструмент, який підтримує універсальне управління продуктивністю та включає повний стек моніторингу, аналіз окремих транзакцій.
- Він надає засоби виявлення витоків пам'яті для визначення споживання пам'яті.
- Засоби виявлення витоків пам'яті Dynatrace Java доступні для програм, написаних на Java, а інструменти .NET Profiler Tools використовуються для програм, що працюють на Java.
- З його унікальним видом точки доступу ви можете знайти об’єкт, який не ефективно використовує пам’ять.
- Ви можете виконувати трендові звалища пам'яті при використанні пам'яті. Цей інструмент допомагає ідентифікувати ті об'єкти, які постійно збільшують споживання пам'яті і не виводяться належним чином з пам'яті.
Клацніть тут для переходу до гоe Dynatrace Офіційний сайт.
Додаткові засоби витоку пам'яті
Це деякі широко використовувані інструменти для виявлення витоків пам'яті. Знову ж список тут ще не закінчений, є й деякі інші інструменти, які використовуються для досягнення тієї ж мети.
Ми розглянемо їх коротко:
# 22) Профайлер NetBeans :
NetBeans Profiler - це власний інструмент профілювання Java, розроблений з такими функціями, як пам'ять, потоки, запити SQL тощо. Сьогодні цей інструмент має деякі нові та вдосконалені функції для обробки дампів потоків.
URL: Профайлер NetBeans
# 23) Mtrace :
Mtrace вбудований у glibc (GNUC - це проект бібліотеки для успішної реалізації стандартної бібліотеки C), який використовується для виявлення витоків пам'яті, спричинених незвичними викликами malloc / free.
Після його виклику зупиняється виділення пам’яті між об’єктами. Сценарій Mtrace Perl використовується для сканування файлу журналу, створеного на предмет витоків пам'яті. Крім того, якщо ви надасте йому вихідний код, тоді можна зрозуміти точне місце, де сталася проблема.
URL: Mtrace
# 24) Java Visual В.М. :
Visual VM - дуже корисний інструмент для розробників для відстеження та відстеження витоків пам'яті. Він аналізує дані купи та збирач сміття. Це забезпечує оптимізоване використання пам'яті та допомагає покращити продуктивність програми.
Пропонує такі функції, як аналіз потоків та аналіз дампа кучі для вирішення проблем під час роботи.
Тут ми закінчили роботу з найпопулярнішими засобами управління витоками пам'яті. Ми можемо вибрати одну або кілька відповідно до критичних областей пам'яті в нашій системі.
Крім того, за допомогою цього програмного забезпечення ми можемо не тільки полегшити завдання, але й зменшити час, необхідний для виявлення витоків пам'яті, що є досить втомливим завданням.
URL: Java Visual VM
Висновок
Інструменти управління витоками пам'яті зменшують частку зусиль та часу, витраченого на управління пам’яттю. Управління доступом до пам'яті та виділення та відстеження витоків є настільки важливим завданням, оскільки пам’ять є основою будь-якого програмного забезпечення для ефективного збереження та управління вашими даними.
Знову ж таки, без належного розподілу пам’яті навіть неможливо запустити прикладну систему. Щоб уникнути збою системи та покращити її продуктивність, нам потрібно виконати управління витоками пам'яті.
Пам’ятаючи про цю потребу, багато організацій використовують доступні для цього інструменти, в кінцевому підсумку полегшують ситуацію для них та для кінцевого користувача.
******************
= >> Зв'яжіться з нами запропонувати список тут.
******************
Рекомендована література
- Як виправити витік пам'яті в програмах Android за допомогою інструмента DDMS
- Найкращі засоби тестування програмного забезпечення 2021 р. (Інструменти автоматизації тестування якості)
- Розгортання Java: створення та виконання файлу Java JAR
- Віртуальна машина Java: як JVM допомагає у запуску програми Java
- Модифікатори доступу в Java - Підручник із прикладами
- Підручник з роздумів про Java з прикладами
- Вступ до мови програмування Java - Підручник з відео
- 25 найкращих платформ для тестування Java та інструментів для автоматичного тестування (частина 3)