Общие сведения о выделении памяти и значениях данных о времени существования объекта в средствах профилирования
Способ профилирования выделение памяти в .NET средств профилирования Visual Studio собирает данные о размере и числе объектов, созданных при выделении или удаленных при сборке мусора, а также дополнительные сведения о функции стек вызова, когда происходит событие.Стек вызовов — это динамическая структура, в которой хранится информация о функциях, которые выполняются на процессоре.
Требования
- Visual Studio Ultimate, Visual Studio Premium, Visual Studio Professional
Профилирование памяти прерывает работу процессора при каждом выделении объектов платформы .NET Framework в профилируемом приложении.Если при этом также осуществляется сбор данных о времени существования объектов, профилировщик прерывает работу процессора после каждой сборки мусора в платформе .NET Framework.Данные собираются для каждой профилируемой функции и для каждого типа объекта.
Данные о выделении
Когда происходит очередное событие .memory, общее число и размер выделенных или удаленных объектов памяти увеличивается.
Когда происходит очередное событие выделения .memory, профилировщик увеличивает число экземпляров каждой функции в стеке вызова.После сбора данных в стеке вызова выполняется код тела только одной функции.Остальные функции в стеке являются родительскими в иерархии вызовов функций, ожидающих возврата значений вызванными ими функциями.
Для события выделения профилировщик увеличивает число эксклюзивных образцов функции, выполняющей его инструкции.Поскольку эксклюзивный образец также учитывается при подсчете общего числа (инклюзивных) образцов функции, увеличивается также и число инклюзивных образцов активной в данный момент функции.
Профилировщик увеличивает счетчики инклюзивных выборок для всех остальных функций, находящихся в стеке вызовов.
Данные о времени существования
Сборщик мусора .NET Framework управляет выделением и освобождением памяти для приложения.Для оптимизации производительности сборщика мусора управляемая куча делится на три поколения: 0, 1 и 2.Сборщик мусора времени выполнения хранит новые объекты в поколении 0.Уровень объектов, оставшихся после сборок мусора, повышается, и они сохраняются в поколении 1 и 2.
Сборщик мусора освобождает память путем удаления целого поколения объектов.Для объектов, созданных профилированным приложением, в представлении "Время жизни объекта" отображаются количество и размер объектов, а также поколение, в котором они были удалены.