[英]Cleaning up large Objects from IIS Memory
我有一個將DataTables存儲在內存緩存(AppFabric)中的應用程序。 這些數據表可能很大。 一旦來自我們的應用程序(MVC站點)的流量很大,IIS的內存使用就會很快通過屋頂。
理想情況下,我們希望能夠一旦從緩存請求后就釋放這些數據表消耗的內存。
Controller的代碼類似於
Using (DataTable dt = DataTable)
{
DataTable dt = Cache.GetObject(objectID);
//perform some manipulation on Data table
DataTable dtSmaller = dt.Select("Select top 1...");
dt.Dispose();
}
//return from controller
return dtSmaller;
一旦多次擊中該控制器,W3WP.exe進程將使用大量內存,直到最終耗盡內存。 發生的情況是DataTable來自緩存,查詢它是為了減少輸出數據的大小。 然后,我處置原始的DataTable。
我一直在尋找一種釋放數據表消耗的內存的方法,而不必依賴於IIS垃圾回收
您可以通過調用GC.GetTotalMemory(true)
強制執行完整的垃圾回收周期。
有關該方法的更多信息: GC.GetTotalMemory
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.