我們有幾個使用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