我在MVC中有以下场景,这会导致IIS工作进程在每次回发期间占用3mb空间。我正在使用ajax请求在mvc中每5秒从服务器检索一次数据。 Ajax请求将从控制器中的操作方法获取数据。这是从控制器返回的数据:
return MyObj;
MyObj是一个动作结果对象,它将用新数据替换div元素的内容。使用GC.GetTotalMemory(true);
我发现它在每个帖子中返回接近3 mb的数据。
我的问题是为什么在上次请求期间返回的操作结果未从服务器内存中清除。我的猜测是每个ajax请求存储在Request
或Response
对象中的结果。返回的结果将被存储在哪里?
编辑:
感谢Nom的回答,我在动作方法的开头和结尾使用了GC.GetTotalMemory(true);
来检查MyObj
使用的内存,发现它只使用2到3 KB超出2 MB的初始内存。这个额外的2MB被添加到我的工作进程内存中(使用任务管理器进行检查,该进程使用的内存在每个帖子上增加2到3 MB)
因此,在每个帖子后面(每5秒),这个额外的2 MB数据占用了我的IIS工作进程空间。任何人都可以解释这种行为以避免回发中的内存消耗吗?
答案 0 :(得分:1)
看看following link。这是一个简短的解释:
希望这有帮助。