我们有几个使用ASP.NET和DevExpress ASPxGridView组件的不同项目。在整个这些项目的开发过程中,已经使用了几种数据绑定技术,现在我们发现其中一些项目正在耗尽服务器上的所有内存。ASP.NET内存管理技术
最初,我们使用一个调用存储过程并将DataSet绑定到gridview,但是在DX建议中,将其修改为一个ObjectDataSource并创建了一个对象,最终对该数据库使用Linq语句并返回一个然后绑定的对象的通用列表。
不幸的是,这并不能解决手头的问题。我们仍然注意到大量的内存被吃掉了,我正在努力解决这个问题。在运行RedGate内存分析器时,我注意到有很多字符串,RuntimeTypeHandles以及每次我们重新绑定到网格时创建的对象实例。
DataBind在加载页面时完成,网格在排序时使用回传,但这会导致MB的内存在每个绑定上泄漏,所以我想知道我可以使用哪些技术/管理对象的最佳做法我们有控制权?我已经在数据对象中实现了IDisposable,处理了linq上下文并将任何其他对象设置为null,但似乎没有什么区别。我似乎是在每次调用时创建一个数据对象的实例,甚至调用dispose也没有什么区别。
请描述'泄漏'。这些物体是否还能以某种方式到达?否则,它不是泄漏的情况,而是(太)太多的GC分配和负载。你有没有简介'#GC集合'? – 2010-05-27 19:35:26
兆字节?这是一些网格......你正在使用分页吗?它应该很容易使用'LinqDataSource' – Thorarin 2010-05-27 19:42:34
您是否遇到内存不足异常或其他类型的内存问题?如果你运行一百次或一千次的页面,内存是否会最终被覆盖,或者“坏东西”会发生?换句话说,内存使用真的有害吗?还是只是正常?我使用ASPxGridViews并不真的有这个问题。 – Greg 2010-05-27 19:48:58