Excel 经典ASP&;软件编写器内存问题
我在经典ASP(我知道这是一个古老的配置)中使用ExcelWriter(SAExcel.dll版本1.1.0.0)生成一些非常庞大的报告(最多12000行50个单元格)。生成报告时,进程的内存使用量会增加100mb多一点,但报告完成后,它将永远不会返回到以前的使用水平。通常10-15mb(但有时高达50mb!)会被内存占用,在生成报告时,这会累积,最终导致错误发生,并阻止生成任何新报告 以下是错误:Excel 经典ASP&;软件编写器内存问题,excel,asp-classic,vbscript,officewriter,Excel,Asp Classic,Vbscript,Officewriter,我在经典ASP(我知道这是一个古老的配置)中使用ExcelWriter(SAExcel.dll版本1.1.0.0)生成一些非常庞大的报告(最多12000行50个单元格)。生成报告时,进程的内存使用量会增加100mb多一点,但报告完成后,它将永远不会返回到以前的使用水平。通常10-15mb(但有时高达50mb!)会被内存占用,在生成报告时,这会累积,最终导致错误发生,并阻止生成任何新报告 以下是错误: Microsoft VBScript runtime error '800a01fb' An
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
代码在保存之前将所有记录集和字典对象设置为“nothing”,因此我认为这些不会导致泄漏。ExcelWriter是否在内存中创建了某种类型的数据,而我的代码/asp垃圾收集没有正确清理?看起来你没有遗漏任何垃圾收集,但是我为SoftArtisans(生产ExcelWriter的公司)工作,根据我们的错误跟踪,我们确实修复了v2和v3中的内存泄漏。不幸的是,这些版本几乎已经足够老了,可以投票了,现在已经不可用了(我们已经8岁了)。如果您有以下问题,请随时与我们联系: