1

我有一台运行 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% 的内存。HDD 上还有可用空间。

我能找到的最佳建议是我们应该更新 .NET 1.1 SP1。我似乎在 .NET 1.1.4322 上,据我所知,它是 1.1 的最新版本。

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

4

1 回答 1

1

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

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

幸运的是,我记得我最近对一些古老的 DB 代码进行了另一项实验性更改:

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

我已经注释掉了最后一行,看看它会产生什么影响。事实证明,效果是内存不足。重要的是,在我的代码调整数组大小的那一行,它还获取了 RecordSet 的 RecordCount 属性。这是关于这个问题的另一个讨论。我希望这可以帮助别人。

于 2014-12-17T16:45:22.987 回答