Я в основном dotTrace'ом пользовался когда приперало, ANTS вроде тоже ничего.
Вот здесь статья есть со сравнительным анализом
Здравствуйте, Степанов Андрей, Вы писали:
СА>Добрый день!
СА>В боевом ASP.NET приложении (framework 4.0) время от времени начинает падать OutOfMemoryException. Наиболее вероятная, на мой взгляд, причина — слишком большой объем сессий. Но я не уверен. Как-нибудь можно узнать, куда ушла память? В принципе, мне было бы достаточно посмотреть на статистику использования памяти по сессиям, потому что это главный подозреваемый.
СА>В свое время я пробовал воспользоваться каким-то профилировщиком памяти, но он выдал такой объем данных по всем объектам, что обработать его было нереально.
СА>Подчеркну — приложение боевое, поэтому поиграться типа "отключить вот этот функционал и посмотреть, не перестанет ли вылетать" я не могу. Хотя небольшие изменения вроде добавления журнализации вполне возможны.
Для боевой системы windbg то что доктор прописал.
Скачиваете и устанавливаете Debugging Tools for Windows
http://msdn.microsoft.com/en-us/windows/hardware/gg463009 на сервере. Когда приложение упадет создайте дамп с помощью ADPlus, после чего этот этот дамп можно проанализировать на другом компьютере. Для .NET есть специальное расширение windows SOS, которое позволяет посмотреть состояние кучи на момент создания дампа, статистику объектов по типам, корневые ссылки, исключения в потоках и много другое, в общем дает все необходимое для поиска причин OOM.
Для знакомства с Windbg рекомендую блог tess
http://blogs.msdn.com/b/tess/archive/2008/02/04/net-debugging-demos-information-and-setup-instructions.aspx