我有一个具有MVC模板并使用REST的应用程序。 假设我已经进行了休息呼叫并且它达到了特定的方法
void sample function() {
// connects to db through entity framework
// retrieves data and embeds in to list
//returns JSON of data received.
}
所以这里的问题是我测量了运行程序所需的内存。它大约是40,000kb。现在,当我给另一个休息呼叫时,内存不会在IIS中清除。它从 40,000kb 而不是零开始。最后,如果我做3或4次调用,则会出现Out of Memory Exception。因此,每次调用后我都需要清理IIS内存,而是保留前一次调用的内存。我如何为以前的调用 all 释放内存。我已经通过处理模型和所有其他可能性尝试了各种解决方案。如果部署在本地而不是IIS上,解决方案似乎有效。有人可以帮助我吗?
答案 0 :(得分:0)
如果垃圾收集是解决方案,那么简单的GC.Collect通常是低效的,并且出于性能原因,只有在真正需要时才应该调用它。当可用内存过低(低于作为过程参数提供的阈值)时,请尝试以下过程调用垃圾。
internal static void CollectGarbage(int SizeToAllocateInMo)
{
long [,] TheArray ;
try { TheArray =new long[SizeToAllocateInMo,125000]; }low function
catch { TheArray=null ; GC.Collect() ; GC.WaitForPendingFinalizers() ; GC.Collect() ; }
TheArray=null ;
}