我有一个将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垃圾收集