尝试在同一个.net 3.5应用程序的两个版本之前/之后进行比较,我会得到不一致的结果,具体取决于我使用的工具。
typeperf - 我认为它具有权威性 - 说:
Process Explorer 会在效果图中显示这些数字:
因此,typeperf说v2需要更多的内存,Process Explorer声称相反。
这些都是单独的测量和不同的测量,但这些数字可以非常可靠地重现。
除了前面提到的2个工具之外,我还从Process Explorer中获取了完整内存转储,并且仅查看文件大小(没有时间使用WinDbg或以其他方式分析它们) :
此外,从 .net Memory Profiler 运行应用程序时,v2中的本机内存,.net内存和总内存都低于v1。
所以它似乎是对世界其他地方的打字(WinDbg分析仍然很出色)。
谁是对的,我怎么知道?
答案 0 :(得分:1)
我很清楚问题是什么:在我的测试中,我没有给GC足够的时间来完成它的工作。
当进行完全转储或使用内存分析器时,GC将运行(在后一种情况下,我知道它是事实,在前者我猜,基于私有字节倾销时显着下降)
这对我解释了。