内存不足错误 - 经典ASP和VPASP购物车
问题描述:
我有一个较旧的Windows 2000服务器运行IIS 5.我有一些网站安装在此服务器上,一个特定的客户正在运行一个有趣的错误。他正在使用VP-ASP购物车。内存不足错误 - 经典ASP和VPASP购物车
Microsoft VBScript runtime error '800a0007'
Out of memory
/cart/admin/admin$db.asp, line 558
接近该行的相关代码:
'********************************************************************************
'all routines dealing with actual cart are here
'CartaddItem()
'CartInit
'********************************************************************************
sub CartInit
dim ArrCart
dim MaxCartItems, CartAttributes
MaxCartItems=GetConfig("xMaxCartItems")
CartAttributes=cMaxCartAttributes
if MaxCartItems="" then exit sub
redim ArrCart(CartAttributes,MaxCartItems)
session("CartArray") = ArrCart
session("CartCount") = 0
end sub
的问题是,当他开始得到这个错误,机器仅使用其存储的刚刚超过50%。 HDD上还有可用空间。
我能找到的最好建议是我们应该更新.NET 1.1 SP1。我似乎在.NET 1.1.4322上,据我所知,它是1.1的最新版本。
任何建议,解决这个将不胜感激!
答
我可以看到这个问题很久没有回答了,你可能已经开始了,但今天我有这个问题,我解决了它。这是发生了什么......
虽然错误信息与你的相同,行号指向代码重新分配使用redim
像你的例子的阵列的空间,这只是指向程序最终运行的地方内存不足 - 不是额外内存使用的真正原因。
还好我记得我曾在一些古老的DB代码最近做了另一个实验变化:
Set dbProviderCon = Server.CreateObject("ADODB.Connection")
dbProviderCon.CursorLocation = adUseClient
我注释掉最后一行,看看它会有什么样的影响。事实证明,效果已经耗尽内存。重要的是,在我的代码调整数组大小的行上,它也获得RecordSet的RecordCount属性。 Here's another discussion about the issue。我希望这可以帮助别人。
错误更多地与资源没有被释放有关 - 比如使用后丢弃对象,而不是像硬盘空间这样的实际物理资源。 – Darren
检查http://classicasp.aspfaq.com/general/i-have-plenty-of-ram-why-do-i-get-an-out-of-memory-error.html和http:// stackoverflow。 com/questions/4171522/maximum-array-of-strings-visualbasic-wsh – SearchAndResQ
.net与经典的asp和vbscript绝对无关 – ulluoink