我正在使用 Scitech 的 .Net Memory Profiler 检查我的应用程序中的一些内容(在 WinXP 64 上运行)。我看到很多情况,我的应用程序使用的列表的单个实时实例始终为 32 字节并显示为数组(例如 Products[])。
当我仔细查看该实例时,它看起来并没有被任何东西引用。如果我选中“仅显示根路径中包含的实例”复选框,则列表引用为空。如果我取消选中该复选框,我只会看到:
Object[] #307[9126]
<GCHandle> #306 {Pinned}
分配调用堆栈如下所示:
mscorlib!System.Collections.Generic.List<T>..cctor()
[Skipped frame(s)]
mscorlib!System.Collections.ObjectModel.Collection<T>..ctor()
MyApp.ProductsAdmin!MyApp.ProductsAdmin.ViewModels.ProductsAdminViewModel..ctor() ProductsAdminViewModel.cs
看起来它刚刚结束了一个空列表的构建。当根路径中不包含任何实例并且我看到的只是固定时,这意味着什么?