返回到客户端的Action Result将被存储在哪里?

时间:2014-04-07 12:00:42

标签: asp.net-mvc garbage-collection request response actionresult

我在MVC中有以下场景,这会导致IIS工作进程在每次回发期间占用3mb空间。我正在使用ajax请求在mvc中每5秒从服务器检索一次数据。 Ajax请求将从控制器中的操作方法获取数据。这是从控制器返回的数据:

return MyObj;

MyObj是一个动作结果对象,它将用新数据替换div元素的内容。使用GC.GetTotalMemory(true);我发现它在每个帖子中返回接近3 mb的数据。

我的问题是为什么在上次请求期间返回的操作结果未从服务器内存中清除。我的猜测是每个ajax请求存储在RequestResponse对象中的结果。返回的结果将被存储在哪里?

编辑:

感谢Nom的回答,我在动作方法的开头和结尾使用了GC.GetTotalMemory(true);来检查MyObj使用的内存,发现它只使用2到3 KB超出2 MB的初始内存。这个额外的2MB被添加到我的工作进程内存中(使用任务管理器进行检查,该进程使用的内存在每个帖子上增加2到3 MB)

因此,在每个帖子后面(每5秒),这个额外的2 MB数据占用了我的IIS工作进程空间。任何人都可以解释这种行为以避免回发中的内存消耗吗?

1 个答案:

答案 0 :(得分:1)

看看following link。这是一个简短的解释:

  1. GC.GetTotalMemory返回近似内存量,以供所有程序分配,而不仅仅是ASP.Net应用程序。
  2. 在Web服务器上,这将添加也在ASP.NET中运行的其他程序的分配。
  3. 除了明确存储的情况外,您的数据不会存储在任何调用之间的任何位置。
  4. 希望这有帮助。