了解分析工具中的内存分配数据值和对象生存期数据值

分析 Visual Studio 的 .NET内存分配 分析工具收集有关控件的信息,并分配中一次垃圾回收和附加信息创建或销毁的对象数 函数调用堆栈,当事件发生。 调用堆栈是一个动态结构,用于存储有关正在处理器上执行的函数的信息。

要求

  • Visual Studio 旗舰版, Visual Studio 高级专业版, Visual Studio 专业版

内存探查器中断计算机处理器。一.NET Framework对象的每个分配在被分析的应用程序的。 同时收集对象生存期数据时,探查器会在每次 .NET Framework 垃圾回收后中断处理器。 系统将集中每个被分析函数和每种类型对象的数据。

分配数据

发生 .Net 内存事件时,将累加所分配或所销毁的内存对象的总数和大小。

发生 .Net 内存分配事件时,探查器将累加调用堆栈上每个函数的样本数。 收集数据后,调用堆栈上当前只有一个函数正在执行其函数体内的代码。 堆栈上的其他函数是等待功能它们调用层次结构中的父函数调用。

  • 对于分配事件,探查器将累加当前执行其指令的函数的独占样本数。 由于独占样本也是函数的总(非独占)样本的一部分,因此还将累加当前活动函数的非独占样本数。

  • 探查器递增调用堆栈上所有其他函数的非独占样本计数。

生存期数据

.NET Framework 的垃圾回收器负责管理应用程序的内存分配和释放。 为优化垃圾回收器的性能,将托管堆分为三代:第 0 代、第 1 代和第 2 代。 运行时的垃圾回收器将新对象存储在第 0 代中。 未回收的对象会被提升并存储在第 1 代和第 2 代中。

垃圾回收器通过解除对整代对象的分配来回收内存。 对于被分析应用程序所创建的对象,“对象生存期”视图显示对象的数量和大小,以及回收对象时属于哪一代。