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) Deleaker
- # 9) Д-р Памет
- # 10) Intel Inspector XE
- # 11) Застраховане ++
- # 12) Визуален детектор за течове за Visual C ++ 2008-2015
- # 13) Профилатор на Visual Studio
- # 14) Mtuner
- # 15) Детектор за течове на Windows
- # 16) AddressSanitizer (A San)
- # 17) GCViewer
- # 18) Plumbr
- # 19) .NET Validator за памет
- # 20) C ++ Валидатор на паметта
- # 21) Dynatrace
- Допълнителни инструменти за изтичане на памет
- Заключение
- Препоръчително четене
Какво е изтичане на памет?
# 1) Когато компютърна програма ненужно използва паметта и я разпределя неправилно, в крайна сметка това води до изтичане на памет в системата.
# две) Понякога системата не освобождава нежелано разпределение на паметта, тъй като не освобождава паметта дори след затваряне на приложението или програмата.
# 3) Когато дадена програма консумира повече от действително необходимата памет, в резултат на това ще възникнат проблеми с паметта и забавяне на производителността на системата.
# 4) По отношение на обектно-ориентираното програмиране, ако даден обект се съхранява в паметта, но не е достъпен от програмния код (дефиниран обект и разпределена паметта, но все пак получаваме грешка, посочваща, че обектът не е дефиниран).
# 5) Има някои езици за програмиране като C и C ++, които не поддържат имплицитно автоматично събиране на боклук и могат да създават такива проблеми с изтичане на памет, докато работят по него (Java използва процес за събиране на боклук, за да се справи с изтичането на паметта).
# 6) Изтичането на памет намалява производителността на системата, като намалява количеството налична памет, увеличава количеството на разбиване и в крайна сметка причинява повреда или забавяне на системата.
# 7) Управление на изтичане на памет е механизмът, който работи в операционната система за динамично разпределение на паметта и се освобождава, когато не се използва.
Видове изтичане на памет
Течовете на памет могат да бъдат категоризирани в няколко типа и малко от тях са обяснени по-долу.
- Член на изтекли данни: Разпределената памет за члена на класа се освобождава, преди класът да бъде унищожен.
- Изтекла глобална памет: Изтича паметта, която не е част от създадения клас, но може да се използва от различни функции и методи.
- Изтекла статична памет: Изтича паметта, която е посветена на функция, дефинирана от създадения клас.
- Изтичане на виртуална памет: Когато базовият клас не е деклариран като виртуален, тогава деструкторите за извлечения обект не могат да бъдат извикани.
- Обаждане на грешен дилокатор.
Управление на изтичане на памет
# 1) Изтичането на памет продължава, когато няма препратка към разпределението на паметта.
# две) Такива изтичания на памет карат програмата да работи повече от очакваното време и консумира излишната памет, като работи непрекъснато във фонов режим или на сървър.
# 3) Преносимите устройства са по-засегнати от изтичане на памет, тъй като съдържат по-малко количество памет и намаляват процесорния капацитет на устройството.
# 4) Можем да вземемПримерна .NET система за управление на изтичане на памет като,
- CLR (Common Language Runtime) се грижи за разпределението на ресурси в .NET и ги освобождава.
- .NET поддържа 3 вида разпределение на паметта като:
- Стек: Съхранява локални променливи и параметри на метода. Препратката към всеки създаден обект се съхранява в стека.
- Неуправлявана купчина: Неуправляваният код ще разпредели обекта в неуправляван стек.
- Управлявана купчина: Управляваният код ще разпредели обекта в управляван стек.
# 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
- Deleaker е самостоятелен собствен инструмент за откриване на изтичане на памет и се използва също като разширение Visual C ++.
- Открива изтичане на памет в купчина и виртуална памет и лесно се интегрира с всяка IDE.
- Самостоятелната версия за отстраняване на грешки, за да покаже текущото разпределение на обекти.
- Поддържа всички 32 - битова, както и 64 - битова система и напълно интегрирана с Visual Studio.
- Генерира богати отчети и експортира крайния резултат в XML.
Щракнете тук за да отидете до официалния сайт на Deleaker.
# 9) Д-р Памет
- Dr. Memory е безплатен инструмент за наблюдение на паметта за Windows, Linux и Mac.
- Този инструмент е способен да идентифицира неинициализирана и неадресируема памет и освободена памет.
- Dr. Memory определя 3 вида грешки:
-
-
- Все още - достъпно местоположение: памет, достъпна от приложението.
- Теч: памет, недостъпна от приложението.
- Възможен теч: Памет, която е достъпна чрез указатели.
-
-
- Освен това, той определя два вида течове като a Direct и Непряк изтичане.
Щракнете тук за да отидете до официалния сайт на 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 ++.
- Бързо диагностицира изтичане на памет в приложението C ++ и избира модула, който трябва да бъде изключен от изтичането на памет.
- Visual C ++ осигурява вградено откриване на изтичане на памет, ползва пълен набор от изтекли блокове.
- Персонализираните и подробни отчети за изтичане на памет са най-добрата характеристика на този инструмент.
- Активира пълния документиран изходен код за библиотеката.
Щракнете тук за навигация до the Visual Leak Detector Официален сайт.
# 13) Профилатор на Visual Studio
- Visual Studio се предлага с инструмента за използване на паметта, който помага за откриване на изтичане на памет и неефективна памет.
- Този инструмент се използва за настолни приложения, приложения за ASP.NET и приложения за Windows.
- Можете да правите снимки на управлявана и родна памет и да анализирате единични снимки, за да разберете въздействието на обект върху паметта.
- Можете да използвате повече от един моментни снимки, за да намерите основната причина за прекомерното използване на паметта.
- Активира пълния документиран изходен код за библиотеката.
Щракнете тук за навигация до the Visual Studio Profiler Официален сайт.
# 14) Mtuner
- Mtuner е търсач на изтичане на памет, използван за приложения на Windows и PlayStation.
- Осигурява допълнителни функционалности за профилиране на паметта.
- Mtuner може да обработва няколко разпределения в секунда с линейно мащабиране на производителността.
- Mtuner се предлага с профилиране, базирано на команден ред, което е полезно за проследяване на ежедневните промени в използването на паметта.
Щракнете тук за навигация до the Mtuner Официален сайт.
# 15) Детектор за течове на Windows
- Windows Leak Detector е инструмент за откриване на изтичане на памет за приложение на Windows.
- Някои основни детектори за течове на Windows са:
-
-
- Не се изисква изходен код и ако има такъв, тогава се изискват по-малко модификации.
- Може да анализира всяко приложение на Windows, написано на всеки език.
- Ефективен и най-подходящ за приложение, разработен по цикличен модел.
-
-
- Този инструмент постоянно се разработва и все още има някои ограничения:
-
-
- Можете да управлявате само един отделен процес наведнъж, в бъдеще ще бъде добавена функция за комуникация между процесите.
- Той анализира само функциите HeapAlloc, HeapRealloc и HealFree.
-
-
Разработчиците на системата работят върху добавянето на повече функции на паметта като HeapCreate.
Щракнете тук за навигация до the Официален сайт на Windows Leak Detector.
# 16) AddressSanitizer (A San)
- Този инструмент с отворен код е предназначен за откриване на изтичане на памет в програма C / C ++.
- Най-бързият инструмент се състои от Compiler Instrumentation Module и Run-time библиотека.
- Този инструмент открива препълване на буфер Heap и Stack и изтичане на памет.
- LeakSanitizer е интегриран с AddressSanitizer, който върши работата по откриване на изтичане на памет.
- С LeakSanitizer можем да посочим инструкцията за игнориране на някои изтичания на памет, като го изпратим в отделен файл за потискане.
- Този инструмент се поддържа на Linux, Mac, OS X, Android и iOS Simulator.
Щракнете тук за навигация до the AddressSanitizer Официален сайт.
# 17) GCViewer
- GCViewer е безплатен инструмент, генериран от IBM, HP, Sun Oracle и BEA JVM.
- Този инструмент се използва за анализиране и анализ на GC Log файлове.
- Можете да генерирате данните в CSV формат като приложение за електронни таблици.
- Той работи върху многословното събиране на боклука. Многословното събиране на боклука накратко е:
-
- Базирано на събития генериране на събиране на боклук за всяка операция.
- Изходното многословно събиране на боклук съдържа идентификатор на приращение и местен клеймо.
-
Щракнете тук за навигация до the Официален сайт на GCViewer.
# 18) Plumbr
претеглена графика списък на съседство c ++
- Това е патентован търговски инструмент, който се използва за проверка на изтичане на памет и събиране на боклука в JVM приложението.
- Plumbr се основава на два важни модула като агент и портал.
- Агентът поддържа JVM и изпраща информация за събиране на боклук и изтичане на памет до портала.
- Можете да видите информацията за използването на паметта и купчината на портала.
- Инструментът използва алгоритъм за откриване, който се основава на анализ на данните за ефективността.
Щракнете тук за навигация до the Plumbr Официален сайт.
# 19) .NET Validator за памет
- .NET Memory Validator е търговски анализатор на изтичане на памет, профилатор на паметта, който се използва за разработване на софтуер и осигуряване на качеството.
- Известен като най-бързият начин за наблюдение на множество разпределения на паметта, предоставящ множество прозрения като:
-
- Разпределения: Показва статистика на разпределенията с цветно кодиране въз основа на класа и
методът, дефиниран за разпределяне на функция. - Обекти: Изгледът на обект показва разпределение на обекти и памет с цветно кодиране
статистика за работещите приложения. - Поколения: Показва броя на обектите за всеки тип обект за всеки обект
генериране, разпределено от приложението. - Памет: Изгледът на паметта показва текущия обект с информация за
тип обект, размер на разпределение и стек повиквания, клеймо за време. - Анализ: Този изглед показва използването на паметта.
- Разпределения: Показва статистика на разпределенията с цветно кодиране въз основа на класа и
-
- Основните функции на този инструмент включват откриване на изтичане на памет, справяне с изтичане на памет, провеждане на регресионни тестове за идентифициране на изтичане на памет.
- .NET validator е съвместим с всяка версия на .NET framework и CLR.
- Лесен за използване, конфигурируем, мощен и многофункционален инструмент за идентифициране на изтичане на памет.
Щракнете тук за навигация до the .NET валидатор на памет Официален сайт.
# 20) C ++ Валидатор на паметта
- Също като .NET Memory Validator, този инструмент е и търговски детектор за изтичане на памет и анализатор.
- C ++ Memory Validator предоставя множество прозрения като:
-
- Памет: Показва информацията за разпределената и изтекла памет и проследява съобщенията за грешки. Данните се показват в дървовидна структура, която може да бъде избрана и филтрирана.
- Обекти: Показва статистиката на обектите с тип обект и разпределени, освободени и преразпределени обекти.
- Покритие: Този изглед предоставя информация за използването на паметта. Инструментът се доставя с филтри, които премахват файловете на трети страни.
-
- Устройството за автоматично обединяване помага да се обединят множество статистически данни от множество прозрения, за да се образува съставно покритие за тестовия пакет за регресия.
- Освен тези прозрения, инструментът предоставя изглед на времевата скала, гореща точка, размери и анализ на приложението.
- Мощен и конфигурируем инструмент, съвместим с Microsoft C и C ++, Intel C ++ и др.
Щракнете тук за навигация до the C ++ Memory Validator Официален сайт.
# 21) Dynatrace
- Dynatrace е търговски инструмент, който поддържа All-in-One Performance Management и включва пълен стек мониторинг, анализ на единична транзакция.
- Той осигурява инструменти за откриване на изтичане на памет за определяне на консумацията на памет.
- Инструментите за откриване на изтичане на памет на Dynatrace Java са налични за приложения, написани на Java, а .NET Profiler Tools се използват за приложения, работещи в Java.
- С уникалния си изглед на гореща точка можете да намерите обект, който не използва ефективно паметта.
- Можете да извършвате трендове за памет, използващи памет. Този инструмент помага да се идентифицират тези обекти, които непрекъснато увеличават консумацията на памет и не се освобождават правилно от паметта.
Щракнете тук за навигация до the Dynatrace Официален сайт.
Допълнителни инструменти за изтичане на памет
Това са някои широко използвани инструменти за откриване на изтичане на памет. Отново списъкът все още не е завършен тук, има и някои други инструменти, които се използват за постигане на същата цел.
Ще ги прегледаме накратко:
# 22) Профилатор на NetBeans :
NetBeans Profiler е патентован инструмент за профилиране на Java, разработен с функции като памет, нишки, SQL заявки и др. Днес този инструмент се предлага с някои нови и усъвършенствани функции за обработка на сметищата на нишки.
# 23) Mtrace :
Mtrace е вграден с glibc (GNUC е проект на библиотека за успешно внедряване на стандартна библиотека C), който се използва за откриване на изтичане на памет, причинено от необичайни malloc / безплатни повиквания.
Веднъж извикан, спира разпределението на паметта за обектите. Mtrace Perl скриптът се използва за сканиране на регистрационния файл, създаден за изтичане на памет. Освен това, ако му предоставите изходния код, тогава може да се разбере точното място, където е възникнал проблемът.
URL: Mtrace
# 24) Java Visual VM :
Visual VM е много полезен инструмент за разработчиците за проследяване и проследяване на изтичане на памет. Той анализира данните за купчина и събирача на боклук. Той осигурява оптимизирано използване на паметта и спомага за подобряване на производителността на приложението.
Предлага функции като Thread Analysis и Heap Dump Analysis за решаване на проблеми по време на изпълнение.
Тук приключихме с най-популярните инструменти за управление на изтичане на памет. Можем да изберем една или повече според критичните области на паметта в нашата система.
Освен това, с използването на този софтуер, ние можем не само да улесним задачата, но и да намалим консумацията на време, необходимо за откриване на изтичане на памет, което е сравнително досадна задача.
URL: Java Visual VM
Заключение
Инструментите за управление на изтичане на памет намаляват дела на усилията и времето, отделено за управление на паметта. Управлението на достъпа до памет и разпределението и проследяването на течове са толкова важна задача, тъй като паметта е гръбнакът на всеки софтуер за ефективно задържане и управление на вашите данни.
Отново, без правилно разпределение на паметта, човек дори не може да стартира системата за приложения. За да избегнем повреда на системата и да подобрим нейната производителност, трябва да извършим управление на изтичане на памет.
Имайки предвид тази необходимост, много организации се възползват от наличните за това инструменти, като в крайна сметка ще улеснят нещата за тях и крайния потребител.
******************
= >> Свържете се с нас да предложите списък тук.
******************
Препоръчително четене
- Как да коригирам изтичане на памет в приложения за Android с помощта на DDMS Tool
- Най-добри инструменти за тестване на софтуер 2021 г. (Инструменти за автоматизация на QA теста)
- Разполагане на Java: Създаване и изпълнение на Java JAR файл
- Java виртуална машина: Как JVM помага при стартирането на Java приложение
- Модификатори на достъп в Java - Урок с примери
- Урок за отражение на Java с примери
- Въведение в езика за програмиране на Java - видео урок
- 25 най-добри рамки за тестване на Java и инструменти за тестване за автоматизация (част 3)