【发布时间】:2014-12-03 10:47:43
【问题描述】:
部分是出于好奇 - 我们想知道我们的应用程序中发生了什么 - 部分是因为我们需要在我们的代码中找到一些潜在的问题,我喜欢在我们的 Web 应用程序运行时跟踪一些一般值。这尤其包括某些对象图的分配内存。
我们的应用程序将一些数据永久保存在内存中,以使其可靠可用。这可以总计达到几 GB 的内存,而执行几乎相同任务的其他应用程序只分配一两个。
由于性能要求,我们无法在运行时附加内存分析器。 因此,在运行时分析对象图以打印出数据的哪些部分在某些情况下如此之大以及哪些部分不是那么大,这将是很棒的。这将极大地帮助我们更好地了解数据会发生什么,并可能优化我们的应用程序的行为。
对象图的意思是,从一个某个对象开始,测量它在内存中的大小,通过所有属性、字段、列表及其所有元素等递归地跟踪所有引用的对象,并添加它们相应的大小,直到我们知道这个对象和所有相关对象使用了多少内存。
实际上,我想回答的问题是:当我刚刚释放对这个锚对象的最后一个引用时,GC 在下次运行清理这个对象图时能够释放多少?
【问题讨论】:
标签: .net memory memory-management