1

在我提出任何问题/解释之前,如果我在问题标题中不清楚,请原谅我。

我刚开始使用可以从 Microsoft 网站下载的 CLRProfiler 64 位,我试图调查我的应用程序分配了多少字节,GC 在每一代中收集了多少字节,最终结果是什么在堆上结束。

我已经使用该应用程序几分钟,然后从 CLRProfiler 生成报告。

我已经得到了我在这里要求的所有信息Clrprofile 摘要

然而,问题是我想知道或者更确切地说,如果我在整个应用程序中的对象分配逻辑导致如此巨大的最终堆结果必然是一件坏事,或者......或者它是否取决于诸如保持循环引用之类的因素(a 和 b 有一个 c 的引用,一个释放的 c 引用,但是 GC 无法收集 b,因为它仍然被引用)或者我如何分配等于 X 字节的对象数量并且最终堆大小要大得多比 X 还是我没有正确理解堆分配?

关于如何评估我是否正在处理分配以及我的堆大小是否正确的任何指导?

我知道我缺乏提出具体问题的指示,但如果您需要更多详细信息,请务必询问。

编辑:

我做了一些非常愚蠢的事情,我在应用程序终止之前生成了报告,反过来可能没有计算分配的字节数,我在终止应用程序后重新生成了,结果现在似乎更有意义了。

最新的 CLRProfiler 摘要

但是我的问题仍然有效,我想,任何有助于更好地理解分配与最终堆大小的帮助将不胜感激。

4

0 回答 0