我有一个 ASP.NET MVC 3 应用程序,它使用 Windsor 来注入存储库和 NHibernate 会话。今天,我第一次击中OutOfMemoryException
. 起初我认为这可能是因为我没有释放Transient
温莎创建的任何对象。作为一个快速的实验,我把所有这些都变成了PerWebRequest
生活方式,但它似乎并没有在很大程度上影响内存使用模式——它仍然在不断上升。
- 我没有做任何缓存
- 我没有使用任何非托管资源
- 我正在对几个匿名对象进行 JSON 序列化
- 我用于压力测试的操作只返回一个微小的 JSON 对象(32 字节),因此任何地方都不会涉及大对象
当我的托管堆大小稳定(使用 Perfmon 验证)时,什么可能导致 IISExpress 私有字节继续增加?
什么是调试这个的正确工具?我假设 CLR 分析器可能没有帮助,因为 Perfmon 在托管堆中没有显示任何泄漏。