dav*_*eps 4 asp.net memory-leaks iis-6 connection-pooling application-pool
考虑具有连接池内存泄漏问题的ASP.NET应用程序(例如,未正确关闭连接)。
回收应用程序池是否清除了连接池(从而允许建立更多连接)?
如果将连接保留在内存中,直到垃圾收集器将其删除为止,那么在重新启动应用程序池时会发生这种情况吗(或者是否可以将其保留)?我还了解到垃圾回收器也可以随时清理它们,但是它们是否仍在使用中并且在重置或重新启动应用程序池之前无法回收?
我正在审查的系统的最终目标显然是纠正代码以正确管理连接,并且我试图对垃圾收集/应用程序池过程有更多的了解。
是的,回收应用程序池会终止并重新启动负责运行应用程序的IIS进程。此时,仅由于进程退出而释放了所有资源。
如果该过程从未重启,而只是泄漏了句柄,则垃圾收集器最终将清理它们。但是,在这种情况发生之前,对于任何正在泄漏的资源,您都有可能用完所有的句柄。这就是为什么在这些对象上调用Dispose()的重要性(最好是通过“使用”模式),以便在应用程序完成处理后立即释放资源,而不是在垃圾回收器处理完之后释放资源。
| 归档时间: |
|
| 查看次数: |
13669 次 |
| 最近记录: |