Каков наилучший инструмент для обнаружения утечек памяти.
И бесплатно, и не бесплатно.
Спасибо
Каков наилучший инструмент для обнаружения утечек памяти.
И бесплатно, и не бесплатно.
Спасибо
Мы используем EurekaLog при нашей работе в Delphi 7. Это компонент обработчика исключений, который дает очень подробную информацию об исключениях (включая переменные среды вызова и т.д.) даже для нарушений доступа. Но еще одна замечательная особенность заключается в том, что вы также можете сообщить об ошибке на утечку памяти, которая показывает точную строку кода, где в первую очередь была выделена память/объект! Это коммерческий продукт, но я по-прежнему очень рекомендую его.
FastMM - это бесплатный детектор утечки памяти (источник), уже интегрированный в последние версии Delphi. Я никогда не нуждался ни в чем другом.
Это намного лучше, чтобы ограничить возможности утечки памяти при кодировании, вместо того, чтобы находить их позже. Некоторые советы:
Всегда используйте try и, наконец, в своем коде для создания свободных объектов. Лучше сразу написать этот код, а затем написать код для использования объектов. Еще лучше использовать IDE-функции, такие как Code Templates.
Используйте только функции, которые возвращают динамически выделенные объекты, когда это абсолютно необходимо. Как правило, лучше передавать объекты в качестве параметров, чем создавать и возвращать их. Например, это
procedure getChoices(var AChoices: TStrings);
будет намного лучше, чем
function getChoices: TStrings;
поскольку нет возможности случайно протекать созданный объект TStrings.
AQTime очень хорошо. Он также выполняет другие функции, такие как профилирование для производительности. И это не требует каких-либо изменений в вашем коде. Конечно, компиляция с информацией об отладке помогает дать лучшие результаты.
Я бы порекомендовал полную версию FastMM4 над версией, включенной в Delphi. Полная версия дает вам полный и подробный отчет, записанный в файл вместо диалогового окна. Объедините это с самонастраиваемым "memoryleak-logfile-differ", и вы все настроитесь на выход из bughunt.
Я всегда использую ReportMemoryLeaksOnShutdown: = (DebugHook < > 0); так что я получаю только утечки, если я отлаживаю.
ps хотел поместить это в комментарий, но у меня еще нет прав.
Вы можете посмотреть этот сеанс CodeRage 2: Борьба с утечками памяти для чайников. В основном это показывает, как использовать FastMM для предотвращения/обнаружения утечек памяти в Delphi. Был для D2007, но все еще релевантен для D2009.
FastMM очень хорош. Я знаю 3 или 4 свободных менеджера памяти для Delphi. Требуется меньше часа, чтобы проверить все, потому что обычно им требуется всего 3 строки кода для встраивания в проект.
Я использую MadExcept, потому что он бесплатный для личного использования.
Попробуйте UMLD 1.0 Мы попробовали и протестировали!! Интеллектуальное решение для разработки приложений Delphi Leakfree и средства отчетности об ошибках для разработки Delphi.