.NET内存分析器优化增益在生产中消失

时间:2012-01-03 15:38:40

标签: .net garbage-collection profiling

我一直在使用内存分析器(来自Scitech的.NET Memory Profiler),仔细查看各种代码,并改进程序的垃圾生成特性。计数器显示垃圾收集已大大减少。

或者看起来如此。因为当我在分析器之外运行程序时,GC似乎经常发生在所有这些优化之前!我已经完成了琐碎的检查(它是相同的程序,编译选项是相同的,机器/使用是相同的,输入都是相同的),我想知道是否有关于探查器如何运行的东西我没有被告知。当然,探查器必须在程序中的某处放置挂钩以查看显示的所有信息。但肯定没有这些钩子,你会认为事情会更顺利,而不是更少?

之前有人见过这样的事吗?

修改

我发现当问题似乎不明确时,很难得到答案。只是想知道是否有足够的眼球会出现有用的暗示。

1 个答案:

答案 0 :(得分:0)

如果您的生产版本在内存较少的计算机上运行,​​则会更频繁地达到垃圾收集阈值,从而导致更多GC。

.NET程序往往会在内存中蔓延,你给它们的内存越多,通常开发机器拥有很多比最终用户最终运行程序的机器更好的资源(这是非常好,可以理解,但你需要记住它。)