|
|
1
5
最好从使用分析器开始。Redgate有一个非常好的蚂蚁内存分析器,并且有一个免费的测试。 Product page here. 运行应用程序,附加分析器,然后正常使用页面。探查器收集有关正在使用的对象的信息,这将允许您查明问题的根本原因。 在我的应用程序中,结果发现我们不小心为执行的每个查询创建了一个nhibernate会话工厂。这些都是由NHibernate内部引用的,这意味着它们除了速度非常慢和效率低下之外,从未被释放过。探查器直接引导我们找到它,否则我们永远也找不到它。 |
|
|
2
2
Redgate的另一种选择是使用ADplus和windbg。同时阅读此博客: 这是调试问题的一个很好的帮助来源。 我和我的系统管理员成功地使用了ADPLUS和windbg来查找ASP.NET应用程序中的内存泄漏。我的开发人员错误的是,他们不小心使用了ASP.NET的缓存,但没有超时。 另一个错误是,开发人员使用了带有xmlserialization的属性重载。有了这个功能.NET将 巡回审判 创建新的序列化程序帮助程序(无论什么)程序集。无法卸载程序集,因此应用程序占用大量内存 |
|
|
3
1
处理文件系统时,处理读卡器和临时对象非常重要。 |
|
|
4
1
你说你经常使用xmlserializer。如果不使用默认构造函数xmlserializer(type)和xmlserializer(type,defaultnamespace),则会导致内存泄漏。 见 this MSDN article 更多信息 |