我一直在使用内存分析器(来自Scitech的.NET Memory Profiler),仔细查看各种代码,并改进程序的垃圾生成特性。计数器显示垃圾收集已大大减少。
或者看起来如此。因为当我在分析器之外运行程序时,GC似乎经常发生在所有这些优化之前!我已经完成了琐碎的检查(它是相同的程序,编译选项是相同的,机器/使用是相同的,输入都是相同的),我想知道是否有关于探查器如何运行的东西我没有被告知。当然,探查器必须在程序中的某处放置挂钩以查看显示的所有信息。但肯定没有这些钩子,你会认为事情会更顺利,而不是更少?
之前有人见过这样的事吗?
修改
我发现当问题似乎不明确时,很难得到答案。只是想知道是否有足够的眼球会出现有用的暗示。
答案 0 :(得分:0)
如果您的生产版本在内存较少的计算机上运行,则会更频繁地达到垃圾收集阈值,从而导致更多GC。
.NET程序往往会在内存中蔓延,你给它们的内存越多,通常开发机器拥有很多比最终用户最终运行程序的机器更好的资源(这是非常好,可以理解,但你需要记住它。)