簡體   English   中英

從IIS內存清除大型對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM