了解分析工具中的内存分配数据值和对象生存期数据值
分析 Visual Studio 的 .NET内存分配 分析工具收集有关控件的信息,并分配中一次垃圾回收和附加信息创建或销毁的对象数 函数调用堆栈,当事件发生。 调用堆栈是一个动态结构,用于存储有关正在处理器上执行的函数的信息。
要求
- Visual Studio 旗舰版, Visual Studio 高级专业版, Visual Studio 专业版
内存探查器中断计算机处理器。一.NET Framework对象的每个分配在被分析的应用程序的。 同时收集对象生存期数据时,探查器会在每次 .NET Framework 垃圾回收后中断处理器。 系统将集中每个被分析函数和每种类型对象的数据。
分配数据
发生 .Net 内存事件时,将累加所分配或所销毁的内存对象的总数和大小。
发生 .Net 内存分配事件时,探查器将累加调用堆栈上每个函数的样本数。 收集数据后,调用堆栈上当前只有一个函数正在执行其函数体内的代码。 堆栈上的其他函数是等待功能它们调用层次结构中的父函数调用。
对于分配事件,探查器将累加当前执行其指令的函数的独占样本数。 由于独占样本也是函数的总(非独占)样本的一部分,因此还将累加当前活动函数的非独占样本数。
探查器递增调用堆栈上所有其他函数的非独占样本计数。
生存期数据
.NET Framework 的垃圾回收器负责管理应用程序的内存分配和释放。 为优化垃圾回收器的性能,将托管堆分为三代:第 0 代、第 1 代和第 2 代。 运行时的垃圾回收器将新对象存储在第 0 代中。 未回收的对象会被提升并存储在第 1 代和第 2 代中。
垃圾回收器通过解除对整代对象的分配来回收内存。 对于被分析应用程序所创建的对象,“对象生存期”视图显示对象的数量和大小,以及回收对象时属于哪一代。