2

是否可以恢复从 w3wp.exe 丢失的内存?我认为 session.abandon() 应该像那样清理资源?问题是我有一个 Web 应用程序,某些页面使 w3wp.exe 显着增长。比如从 40 MB 到 400 MB。现在我将坚决地优化我的代码以减少这种情况,但是对于 w3wp.exe 的增长量,即使用户注销并关闭浏览器,是否也无法恢复丢失的内存?

我知道这个工作进程会在空闲使用 30 分钟(默认)后回收,但是如果长时间没有空闲使用时间并且工作进程仍然有那部分内存,它只是继续增长呢?有什么想法的人吗?

4

2 回答 2

0

垃圾收集器将处理任何需要释放的内存,前提是您正确地处理了这些东西等。每次调用 Session.Abandon() 时,GC 不会立即启动,因为这会对性能造成重大影响。

也就是说,每个应用程序都有一个“正常”的内存使用量,即稳定的内存使用量(同样,前提是您没有泄漏),并且每个应用程序的这个数字都不同。400MB 可能很多,也可能什么都不是,这取决于您的应用程序的用途。我的应用程序徘徊在 400MB 左右,而其他应用程序则徘徊在 1.5GB 左右,只要内存使用量稳定在某处就可以了。如果你看到无限的内存使用,那么你很可能在你的应用程序的某个地方有泄漏。

在进程内会话中存储大量数据也会迅速增加内存使用量。相反,使用文件或数据库来存储这些数据。

于 2010-07-29T13:49:39.540 回答
0

除非您泄漏内存,否则内存管理器将重新使用此内存,因此您不应看到进程内存不断增长。

于 2010-07-29T13:51:47.477 回答