内存不足错误 - 经典 ASP 和 VPASP 购物车



我有一台运行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中最新的。

任何解决此问题的建议都将不胜感激!

我可以看到这个问题已经很久没有答案了,你可能已经继续前进了,但我今天遇到了这个问题,我解决了它。下面是发生的事情。。。

虽然错误消息与您的错误消息相同,并且行号指向的代码使用redim为数组重新分配了空间,就像您的示例一样,但它只是指向程序最终耗尽内存的地方,而不是额外使用内存的实际原因。

幸运的是,我记得我最近在一些古老的DB代码中做了另一个实验性的更改:

        Set dbProviderCon = Server.CreateObject("ADODB.Connection")
        dbProviderCon.CursorLocation = adUseClient

我已经把最后一行注释掉了,看看会有什么效果。事实证明,这种效果已经没有记忆了。重要的是,在我的代码调整数组大小的那一行,它还获得了RecordSet的RecordCount属性。下面是关于这个问题的另一个讨论。我希望这能帮助到别人。

最新更新