【发布时间】:2010-12-09 03:40:49
【问题描述】:
在工作中的遗留应用程序中,我看到未关闭的记录集散布在许多页面上。
- 这有什么后果?
- 连接会自动关闭吗?
- 是否在每个请求结束时释放资源?
更新:
txn!
【问题讨论】:
-
我们也有同样的问题。我尽量远离asp...
标签: asp-classic database-connection
在工作中的遗留应用程序中,我看到未关闭的记录集散布在许多页面上。
更新:
txn!
【问题讨论】:
标签: asp-classic database-connection
我积极维护数十个 Classic ASP 网站/内联网/外联网/系统。
经验法则是:
.close() 方法(在记录集上)然后,对于任何对象实例,我们如下释放内存:
Set variableABC = Nothing'它会破坏变量和对象实例之间的指针,但它不会释放内存
variableABC = Empty '它将有效地释放内存。最后一个也适用于所有类型的变量,因为 VBScript/ASP 变量是无类型的。因此,可以(并且应该)沿着脚本以这种方式释放字符串、长整数、货币或数组(仅适用于大小合适的变量。释放包含"abc" 的变量是没有用的,除非你有您的脚本中有数百万个)。【讨论】:
- 这有什么后果?
资源不会很快被释放,并且取决于代码的其余部分,性能会受到影响。
- 连接会自动关闭吗?
- 是否在每个请求结束时释放资源?
在页面执行结束时,所有连接都被终止并释放所有资源。有些人认为,既然发生了这种情况,就无需担心显式关闭连接和/或释放资源。
在所有条件相同的情况下,不鼓励依赖这一点,因为您永远不知道在交通繁忙的情况下事情会如何发展 - 这就是为什么所有优秀的教程/讲师都会告诉您仅在需要时打开,并且完成后立即发布。
【讨论】:
如果不关闭它,就会出现内存泄漏,这会很快耗尽您的资源。 IIS 最终会为您清理资源,但它不是很可靠。显式关闭记录集然后将其设置为空以释放资源更安全、更可靠。还要确保关闭您的连接并将其设置为空。
【讨论】:
关闭记录集不会关闭连接
http://www.devguru.com/technologies/ado/QuickRef/recordset_close.html
您应该始终尽快关闭连接,以将它们释放回连接池中。
泄漏连接的系统会变慢并逐渐停止。
【讨论】: