Есть небрежно написанное приложение C#/UWP, которое часто тратит время на сборку мусора — хотелось бы увидеть где именно плодятся объекты и какие у них типы.
Встроенные средства Visual Studio 2017/2019 Enterprise позволяют это сделать? Что-то мне сложно понять, что за инфу генерят встроенные профайлеры и как её читать. Нужна простая вещь, видеть события — вот приложение насоздавало миллион объектов этого типа и вот они все были собраны в такой-то момент времени.
Здравствуйте, Vladek, Вы писали:
V>Есть небрежно написанное приложение C#/UWP, которое часто тратит время на сборку мусора — хотелось бы увидеть где именно плодятся объекты и какие у них типы.
V>Встроенные средства Visual Studio 2017/2019 Enterprise позволяют это сделать? Что-то мне сложно понять, что за инфу генерят встроенные профайлеры и как её читать. Нужна простая вещь, видеть события — вот приложение насоздавало миллион объектов этого типа и вот они все были собраны в такой-то момент времени.
Здравствуйте, Vladek, Вы писали:
V> хотелось бы увидеть где именно плодятся объекты и какие у них типы. V>Встроенные средства Visual Studio 2017/2019 Enterprise позволяют это сделать?
Профайлер студии позволяет увидеть: сколько и каких объектов создано в процессе работы программы, сколько они занимают памяти, а также перейти в то место, где создан конкретный экземпляр. За давностью лет я, правда, позабыл, как его настраивать.
UPD
Глянул бегло, как сейчас.
В свежих студиях при запуске приложения по умолчанию открывается окошко Diagnostic Tool.
1. Выделяешь интервал на графике Process Memory
2. Во вкладке Memory Usage жмешь Take Snapshot
3. Тычешь в появившуюся строку, откроется полный список объектов, которые ты наплодил
Здравствуйте, Vladek, Вы писали:
V>Встроенные средства Visual Studio 2017/2019 Enterprise позволяют это сделать? Что-то мне сложно понять, что за инфу генерят встроенные профайлеры и как её читать. Нужна простая вещь, видеть события — вот приложение насоздавало миллион объектов этого типа и вот они все были собраны в такой-то момент времени.
Не знаю насчёт UWP, но есть Debug -> Performance Profiler -> .NET Object Allocation Tracking
Visual Studio Community 2019 16.3.10
как раз там будет список, кого насоздавали, кого убрали.
Re[2]: Как увидеть какие типы объектов собирает GC
Здравствуйте, Mihas, Вы писали:
M>Глянул бегло, как сейчас. M>В свежих студиях при запуске приложения по умолчанию открывается окошко Diagnostic Tool. M>1. Выделяешь интервал на графике Process Memory M>2. Во вкладке Memory Usage жмешь Take Snapshot M>3. Тычешь в появившуюся строку, откроется полный список объектов, которые ты наплодил
То, что нужно, но работает нестабильно — иногда не делает снимков.
Re[2]: Как увидеть какие типы объектов собирает GC