2013-06-27 13 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% своей памяти. На жестком диске также есть место.

Лучшее предложение, которое я могу найти, это то, что мы должны обновить .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 

я заметил, что последняя строка, чтобы увидеть, какой эффект это будет иметь. Оказывается, у эффекта заканчивается память. Важно отметить, что в строке, где мой код изменял размер массива, он также получал свойство RecordCount для RecordSet. Here's another discussion about the issue. Я надеюсь, что это помогает кому-то.

 Смежные вопросы

  • Нет связанных вопросов^_^