2013-06-27 52 views
1

我有一個較舊的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的最新版本。

任何建議,解決這個將不勝感激!

+1

錯誤更多地與資源沒有被釋放有關 - 比如使用後丟棄對象,而不是像硬盤空間這樣的實際物理資源。 – Darren

+1

檢查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

+2

.net與經典的asp和vbscript絕對無關 – ulluoink

回答

1

我可以看到這個問題很久沒有回答了,你可能已經開始了,但今天我有這個問題,我解決了它。這是發生了什麼......

雖然錯誤信息與你的相同,行號指向代碼重新分配使用redim像你的例子的陣列的空間,這只是指向程序最終運行的地方內存不足 - 不是額外內存使用的真正原因。

還好我記得我曾在一些古老的DB代碼最近做了另一個實驗變化:

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

我註釋掉最後一行,看看它會有什麼樣的影響。事實證明,效果已經耗盡內存。重要的是,在我的代碼調整數組大小的行上,它也獲得RecordSet的RecordCount屬性。 Here's another discussion about the issue。我希望這可以幫助別人。