我有一个奇怪的问题,IIS7已经决定为一个小型的网页加载大量的内存。 在每次请求时,它会在这个过程中增加2到20MB的内存,我不能像我一样弄清楚为什么。 我已经广泛地寻找内存泄漏,但我似乎无法find发生这种情况。 有没有人有一些build议,我可以做什么来隔离问题?
你需要的是一个内存分析器。 一个很好的内存分析器,审计你的.NET代码,将指向你的对象,以及它们被分配的代码中占据最多内存的地方。 没有这样的工具,就很难甚至不可能查明实际的问题(思考几个小时或几天,而不是几个星期)。
你可以说所有的数据库连接都closures了,但是这是真的吗? 你是否围绕所有的一次性对象使用using语句(任何实现了IDisposable的对象都可能会泄漏资源,包括内存)? 有代码审查工具,可以帮助你分析你的代码(想想ReSharper)。
一些configuration文件:
如果我记得不错,我使用YourKit得到了最好的结果(它提供了最小的开销,但是在实时服务器上仍然很重要)。 .NET有许多其他的内存和性能分析器。
如果你不知道如何去做,find记忆的来源并不容易。 (我也不…)
您可能想尝试查看是否可以找出导致此问题的代码:
您可能需要阅读: configuration应用程序池的回收设置(IIS 7) 。
在你的情况下: 达到要求限制时回收 。
你有没有尝试过使用任何.NET内存分析器? 这可能比使用WinDBG跟踪内存分配的内容要痛苦不less。