C# 已分配字节和最终堆字节的正确比率?或者任何逻辑来测量或比较分配内存和堆最终大小?

C# 已分配字节和最终堆字节的正确比率?或者任何逻辑来测量或比较分配内存和堆最终大小?,c#,.net,clr,profiler,clrprofiler,C#,.net,Clr,Profiler,Clrprofiler,在我方提出任何问题/解释之前,如果问题标题不清楚,请原谅我 我刚开始使用可以从Microsoft网站下载的CLRProfiler 64位,我试图调查我的应用程序分配了多少字节,GC在每一代中收集了多少字节,堆上的最终结果是什么 我已经使用了该应用程序几分钟,然后从CLRProfiler生成了报告 我这里有我要的所有信息 然而,问题是我想知道或者更确切地说是理解,如果我在整个应用程序中的对象分配逻辑导致如此巨大的最终堆结果,那么这必然是一件坏事,或者。。。或者这取决于一些因素,比如保持循环引用(a

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

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

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

我这里有我要的所有信息

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

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

我知道我缺乏提出具体问题的指导,但如果你想更详细的说明,请一定要问

编辑:

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


但我的问题仍然有效,我想,如果能帮助您更好地理解分配和最终堆大小,我们将不胜感激。

CLRProfiler值得您为此付出每一分钱。好的剖析器需要钱。嗯,但那是一个免费的剖析器,我从这里下载的:。。它有32位和64位版本,非常详细,非常有用。免费:)