asp-classic – VBScript Out of Memory Error
|
我有一个由第三方公司建立的经典ASP CRM.目前,我可以访问源代码,并且可以进行任何更改. 随机地全天,通常在用户长时间使用之后,我的大多数页面都开始出现Out of Memory错误. 构建应用程序的方式是,所有页面和脚本都从Global.asp文件中提取核心功能.在该文件中也嵌入了其他全局文件,但显示的错误显示
第0行是global.asp文件的include.一旦发生错误,在一段未指定的时间之后,错误发生在一段时间内消退,但随后又开始再次发生.关于应用程序的编写方式,它使用的功能,以及我已经完成的“诊断” – 它似乎是一个常见的使用函数,它隐藏了记录集之类的数据或者那种性质的东西,然后没有正确地释放它.然后其他用户尝试使用相同的功能,最终它只是填满导致错误.我有效清除错误的唯一方法是实际重启IIS,回收应用程序池,然后重新启动SQL Server服务. 不用说,我和我的用户都很生气…. 我无法确定由于实际错误消息呈现为行0而导致的错误 – 但是从那里我不知道在20K行代码中它可能挂起.关于如何隔离或至少指出我正确的方向以开始清理它的任何想法或想法?有没有办法让我增加VBScript的“内存”大小?我知道有一个限制但它设置为… 512K你可以增加到1GB? 以下是我尝试过的事情: >将SQL内联语句删除到视图中 解决方法常见的内存泄漏你说你正在关闭所有好的记录集和连接. 但是你要删除对象吗? 例如: Set adoCon = new Set rsCommon = new 'Do query stuff 'You do this: rsCommon.close adocon.close 'But do you do this? Set adoCon = nothing Set rsCommon = nothing 经典ASP中没有垃圾收集,因此任何未销毁的对象都将保留在内存中. 此外,确保在每个分支中运行关闭/未关闭.例如: adocon.open
rscommon.open etc
'Sql query
myData = rscommon("condition")
if(myData) then
response.write("ok")
else
response.redirect("error.asp")
end if
'close
rsCommon.close
adocon.close
Set adoCon = nothing
Set rsCommon = nothing
在重定向之前没有任何东西被关闭/销毁,所以它只会在某些时候清空内存,因为并非所有逻辑分支都会导致正确的内存清除. 更好的设计 还不幸的是,这听起来像网站设计不好.我总是将我的经典ASP结构为: <%
Option Explicit
'Declare all vars
Dim this
Dim that
'Open connections
Set adoCon...
adocon.open()
'Fetch required data
rscommon.open strSQL,adoCon
this = rsCommon.getRows()
rsCommon.close
'Fetch something else
rscommon.open strSQL,adoCon
that = rsCommon.getRows()
rsCommon.close
'Close connections and drop objects
adoCon.close
set adoCon = nothing
set rscommon = nothing
'Process redirects
if(condition) then
response.redirect(url)
end if
%>
<html>
<body>
<%
'Use data
for(i = 0 to ubound(this,2)
response.write(this(0,i) & " " & this(1,i) & "<br />")
next
%>
</body>
</html>
希望其中一些有所帮助. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 每个人如何存储连接字符串?
- asp.net – 在代码而不是数据库中存储salt
- 充分利用ASP.NET的三种缓存提高站点性能的注意方法
- asp.net-mvc – 什么是ASP.NET MVC不适合?
- asp.net – 总是显示FooterTemplate,甚至没有数据
- asp.net-mvc – 从OWIN身份验证中间件中考虑控制器属性
- asp.net – 优雅地停止fastcgi-mono-server,网站内容更新,无
- asp.net-web-api – 如何访问所有querystring参数作为字典
- asp.net – 配置节“system.servicemodel”无法读取,因为它
- 集成ASP.NET身份的最佳做法 – 它们是否存在?
- asp.net-mvc – 具有.NET MVC 5属性路由的贪婪段
- 使用asp.net mvc进行基于REST的端点
- asp.net-mvc – asp.net mvc未经授权的回复是空白
- asp.net-mvc – 在web.config文件中创建自定义变
- asp.net-mvc-3 – ASP .Net MVC 3不引人注目的客
- 中国网通新版400电话 - 企业直线
- asp.net – 控制器SessionStateBehavior是ReadOn
- asp.net-mvc – HTML5元素的“传说”太少了
- asp.net – 我应该在我的HttpHandler中设置IsReu
- asp.net-mvc – 如何将用户重定向到ASP.NET MVC中
