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