繁体   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