#c# #.net #memory
#c# #.net #память
Вопрос:
Недавно мне стало любопытно, какие именно объекты собираются в каком поколении. Прошло некоторое время с тех пор, как я в последний раз использовал профилировщик, которым, я думаю, был SciTech. Я не помню, чтобы он показывал разбивку коллекций, отсортированных по номеру поколения, но я могу ошибаться.
Прежде чем я пойду и установлю целую кучу профилировщиков, у кого-нибудь есть рекомендации?
Ответ №1:
JetBrains dotTrace одинаково хорош, как и ANTS. На всякий случай, если вы хотели иметь больше выбора.
Ответ №2:
Вы можете использовать WinDbg. Существует расширение под названием SOSex (SOSEX), которое расширяет основные команды, предоставляемые стандартом SOS.DLL расширение отладчика.
В частности, у него есть команда, !dumpgen, которая сбрасывает содержимое указанного поколения.
Кроме того, с помощью SOS !FindRoots вы можете установить точку останова, когда GC собирается собирать поколение.
Ответ №3:
ANTS Performance Profiler 6.2 Профилировщик .NET-кода: ускоряет производительность вашего.СЕТЕВЫЕ приложения
Комментарии:
1. И вы уверены, что я могу посмотреть Gen2 и получить список объектов?
Ответ №4:
Я использую ANTS — он состоит из 2 отдельных профилировщиков, одного для производительности и одного для памяти. Вам нужно было бы использовать ANTS Memory Profiler для просмотра коллекции объектов. Это определенно позволяет вам исследовать разные поколения по отдельности.