正在从IIS内存中清理大型对象
本文关键字:大型 对象 内存 IIS | 更新日期: 2023-09-27 18:20:15
我有一个应用程序,它将DataTables存储在内存缓存(AppFabric)中。这些数据表可能相当大。一旦我们的应用程序(MVC站点)流量很大,IIS的内存使用率就会很快飙升。
理想情况下,我们希望能够释放这些DataTables从Cache请求后所消耗的内存。
控制器的代码与类似
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。
我正在寻找一种释放DataTable消耗的内存的方法,而不依赖IIS垃圾回收
您可以通过调用GC.GetTotalMemory(true)
来强制执行一个完整的垃圾回收周期
有关该方法的更多信息:GC.GetTotalMemory