В Visual Studio 2017 при использовании инструментов диагностики при выборе «Сделать снимок» GC запускается автоматически до сбора данных снимка?
Я попробовал несколько эмпирических тестов, остановив на точке останова в стороне цикл обработки сообщений, сделав снимок, затем выполнив GC.Collect () в ближайшем окне, затем сделал еще один снимок и сравнил. Приблизительно в 20 попытках в двух случаях я видел различия в снимках.
Когда вы делаете снимок, он не показывает маркер GC в окне Process Memory. Когда я выдал GC.Collect () через непосредственное окно, он показывает маркер GC.
Я бы ожидал, что моментальные снимки никогда не будут разными, подразумевая, что GC действительно происходит до агрегирования данных моментальных снимков, или он будет отличаться почти каждый раз, когда GC не выполняется первым.
В ANTS и других профилировщиках, которые я использовал, кажется, совершенно ясно, что сборщик мусора запускается в первую очередь до сбора снимков, так что сравнение не искажается объектами кучи без ссылок и без сбора.
Но я не мог легко проверить в этом случае, и в документах не упоминалось ни того, ни другого.