清理IIS内存中的大对象

时间:2014-09-02 12:03:46

标签: c# caching iis memory datatable

我有一个将DataTable存储在内存缓存(AppFabric)中的应用程序。这些DataTable可能非常大。一旦我们的应用程序(MVC站点)有大量流量,IIS的内存使用量就会非常快地进入。

理想情况下,我们希望能够在缓存请求后释放这些DataTable消耗的内存。

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来自Cache,它被要求减少输出数据的大小。然后我处理原始的DataTable。

我一直在寻找一种方法来释放DataTable消耗的内存而不依赖于IIS垃圾收集

1 个答案:

答案 0 :(得分:0)

您可以通过调用GC.GetTotalMemory(true)

强制执行完整的垃圾收集周期

有关方法的更多信息:GC.GetTotalMemory