【发布时间】:2015-04-13 18:47:42
【问题描述】:
我正在使用会话学习 ASP.Net 中的状态管理。 我最近使用了 proc ASP.Net 会话状态服务器来存储我的应用程序的会话数据。 我想知道的是,如果 asp.net 会话状态服务器中的会话被放弃,它会发生什么。 asp.net 会话状态服务器端如何管理内存。 我观察到的行为如下: 最初,在我的应用程序中创建会话之前,我通过 Windows 任务管理器检查了 asp.net 会话状态进程正在消耗的内存。大约 2300 KB。 然后我在我的应用程序中创建了一个会话,对其进行序列化并添加了大量数据,之后asp.net会话状态进程内存增加到大约4700 KB。 现在我尝试删除、清除和放弃(Session.Abandon())会话,但是 asp.net 会话状态进程消耗的内存并没有减少,它保持在 4300 左右。 你能告诉我是否有任何显式的内存管理步骤要遵循 out of proc 会话,还是我在这里遗漏了任何基本步骤。 asp.net 会话状态进程如何处理此内存?如果不是,我该如何管理?
【问题讨论】:
-
Abandon方法实际上指示状态服务器释放对数据的所有引用,但是该进程没有任何义务立即将该内存返回给主机操作系统。当然,保留内存分配并在下次将某些内容存储在 Session 状态时重用它会更有效。 -
我建议您在删除相同的对象图后再次存储相同的对象图后观察会话状态服务器内存会发生什么。我的钱说内存使用量将保持在 5MB 以下。
-
也就是说,每个用户的会话状态应该只有 字节,当然不是兆字节的数据。
-
它确实保持在 5 MB 以下。也感谢您的建议。
标签: c# asp.net session session-management session-state-server