2013-09-05 1 views
0

Я использую ExcelWriter (SAExcel.dll версии 1.1.0.0) в классическом ASP (я знаю, что это древняя конфигурация), чтобы генерировать довольно красивые отчеты (~ 12 000 строк из 50 ячеек на большинство). При генерации отчетов потребление памяти процесса увеличивается чуть более 100 МБ, но когда отчет завершен, он никогда не возвращается к прежнему уровню использования. Обычно 10-15 Мб (но иногда до 50 Мбайт!) Остается занятым в памяти, и по мере создания отчетов это накапливается и в конечном итоге вызывает ошибку и предотвращает создание любых новых отчетов.Classic ASP & SoftArtisans Ошибка памяти ExcelWriter

Вот ошибка:

Microsoft VBScript runtime error '800a01fb' An exception occurred: 'xlw.Save' 
/report.asp, line 2947 

Иногда ошибка другой один из подобного формата, но и содержит:

not enough storage is available 

Вот мой код для инициализации ExcelWriter:

Function RunExport() 
    '--- Create spreadsheet 
    Set xlw = Server.CreateObject("Softartisans.ExcelWriter") 
    Set cells = xlw.Worksheets(1).Cells 

Объект 'cells' заполнен данными из нескольких наборов записей и стилизован с коллекцией на стиль и шрифт объекты, созданные как это:

set NumStyleNormal = xlw.CreateStyle 
    set ReportFont2 = xlw.CreateFont 

Вот код, который должен очистить объекты в памяти и отправить отчет в браузер после того, как клетки были заселены:

err.clear 
    '--- Save Spreadsheet File 
    xlw.Save "report.xls", saOpenInExcel 
    if err.number > 0 then 
     response.write err.description 
    end if 
    xlw.Close 
    Set xlw = nothing 
    Set Cells = nothing 
End Function 

Код устанавливает все записи и словарные объекты, используемые для «ничего» перед сохранением, поэтому я не думаю, что это вызывает утечку. Создает ли ExcelWriter какие-то данные в памяти, что моя сборка мусора code/asp не очищается должным образом?

ответ

0

Не похоже, что вам не хватает коллекции мусора, однако я работаю для SoftArtisans (компании, которая производит ExcelWriter), и в соответствии с нашим отслеживанием ошибок мы исправили утечки памяти в версиях v2 и v3. К сожалению, эти версии почти достаточно стары, чтобы голосовать и больше не доступны (мы в 8). Не стесняйтесь обращаться к нам в автономном режиме, если у вас есть вопросы: http://www.officewriter.com/contact-softartisans.aspx