在这里我们的网络应用程序遇到了一个棘手的问题。(Asp.net 2.0 赢服务器 2008)
尽管我希望它保持在相当静态的水平,但我们对网站的内存使用量会不断增长。(我们有少量数据存储在状态中)。
想找出问题所在,我运行了 System.GC.Collect(); 几次,进行内存转储,然后将此内存转储加载到 WinDbg 中。
当我执行 DumpHeap -Stat 时,我会在特定类型的内存中得到一个非常大的数字。
0000064280580b40 713471 79908752 付款选项
所以,为这种类型做一个 DumpHeap -MT,我得到了一堆对象引用。选择其中的一个随机数,我执行 !gcroot 并且命令返回报告没有对其进行引用。
对我来说,这正是 GC 应该收集这些项目的时候,但由于某种原因,它们一直处于未完成状态。
任何人都可以解释可能发生的事情吗?