【发布时间】:2010-06-17 07:25:18
【问题描述】:
我编写了各种基于 C# 控制台的应用程序,其中一些运行时间很长,一些没有运行,随着时间的推移,它们会占用大量内存。通过任务管理器查看windows性能监视器时,同样的问题不断出现在我的脑海中;如何按类型细分导致此足迹的数字对象;其中哪些是可访问的,哪些不是可以收集的。在许多情况下,我都执行了代码检查,以确保我不会不必要地持有超过所需时间的对象并使用 using 构造处理对象。当我释放大量对象(例如,保存在刚刚被清除的集合中)时,我最近还研究了使用 CG.Collect 方法。但是,我不太确定这会产生多大的不同,所以我把那段代码扔掉了。 我猜想 sysinternals 套件中有一些工具可以帮助解决这些内存类型问题,但我不确定哪些以及如何使用它们。另一种选择是购买第三方分析工具,例如 JetBrains dotTrace;但我需要先确定我已经探索了免费选项,然后再与我的经理联系。
【问题讨论】:
标签: c# garbage-collection memory-management profiling