部分出于好奇 - 我们想知道我们的应用程序中发生了什么 - 部分原因是我们需要在代码中发现一些潜在的问题,我喜欢在运行时跟踪一些常规值我们的网络应用程序。这尤其包括某些对象图的分配内存。确定.NET中对象图的内存使用情况
我们的应用程序会将一些数据永久保留在内存中以使其可靠可用。这可以总结为几GB的内存,而做几乎相同的东西的其他应用程序只分配一个或两个。
由于要求的性能,我们无法在运行时连接内存分析器。 因此,在运行时分析一个对象图很好,可以打印出哪些部分的数据在某些情况下非常大,哪些不那么大。这将有助于我们更好地理解数据会发生什么并可能优化应用程序的行为。
对象图的装置,从一定对象开始,测量其在存储器大小,递归地跟踪通过所有属性,字段,列表与他们的所有元素等所有引用的对象和加入它们的相应尺寸,直到我们具有信息该对象和所有相关对象使用了多少内存。
实际上,我想回答的问题是:当我刚刚释放对此锚点对象的最后一个引用时,在下次运行时清理此对象图时GC能够释放多少?
这是什么让我感到困惑:内存分析器如何获取这些信息?这应该在同一过程中更有可能。 – 2014-10-08 18:41:22