我有一台运行IIS 5的旧版Windows 2000服务器。我在这台服务器上安装了许多网站,一位特定客户遇到了一个有趣的错误。他正在使用VP-ASP购物车。
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%的内存。硬盘上还有空间可用。
我能找到的最佳建议是我们应该更新.NET 1.1 SP1。我似乎在.NET 1.1.4322上,据我所知,这是最新的1.1。
任何有关解决此问题的建议都将非常感谢!
答案 0 :(得分:1)
我可以看到这个问题很长一段时间没有得到答复,你可能已经开始了,但我今天遇到了这个问题而且我解决了这个问题。这里发生了什么......
虽然错误消息与您的相同,并且行号指向使用redim
像您的示例重新分配数组空间的代码,但这只是指向程序最终耗尽内存的地方 - 不是额外内存使用的实际原因。
幸运的是,我记得我最近在一些古老的数据库代码中进行了另一次实验性修改:
Set dbProviderCon = Server.CreateObject("ADODB.Connection")
dbProviderCon.CursorLocation = adUseClient
我已经注释掉了最后一行,看看它会产生什么影响。事实证明,效果已耗尽内存。重要的是,在我的代码调整数组大小的行上,它也获得了RecordSet的RecordCount属性。 Here's another discussion about the issue。我希望这有助于某人。