Tag: 内存泄漏

Java的Apache-poi,内存泄漏与Excel文件

我需要为我的论文阅读(15000)excel文件。 我正在使用Apache poi来打开,稍后分析它们,但大约5000个文件后,我得到以下exception和stacktrace: Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.attr(Cur.java:3044) at org.apache.xmlbeans.impl.store.Cur$CurLoadContext.attr(Cur.java:3065) at org.apache.xmlbeans.impl.store.Locale$SaxHandler.startElement(Locale.java:3263) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportStartTag(Piccolo.java:1082) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseAttributesNS(PiccoloLexer.java:1822) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseOpenTagNS(PiccoloLexer.java:1521) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.parseTagNS(PiccoloLexer.java:1362) at org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.yylex(PiccoloLexer.java:4682) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yylex(Piccolo.java:1290) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.yyparse(Piccolo.java:1400) at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:714) at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3479) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1277) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1264) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345) at org.apache.poi.POIXMLTypeLoader.parse(POIXMLTypeLoader.java:92) at org.openxmlformats.schemas.spreadsheetml.x2006.main.WorksheetDocument$Factory.parse(Unknown Source) at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:173) at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:165) at org.apache.poi.xssf.usermodel.XSSFWorkbook.parseSheet(XSSFWorkbook.java:417) at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:382) […]

Excel不释放工作簿closures内存

我有一个VBScript打开一个文件夹中的所有Excel文件,并将一定范围复制到摘要文件。 摘要文件在整个操作中保持打开状态,但其他文件在复制范围后closures。 这意味着Excel应用程序始终保持打开状态。 问题在于,即使在closures并且内存使用稳步攀升之后,Windows仍然保留着每个工作簿。 我试图通过禁用所有加载项并删除personal.xlsb工作表来隔离问题。 然后我手动打开几个工作簿(不涉及脚本)并逐一closures它们。 内存使用增加了每个打开的文件,但没有减less,当我开始closures它们。 我已经search了几个小时,唯一的答案是我可以find退出并重新启动应用程序。 这是一个可悲的解决方法(和我的脚本痛苦) – 必须有一个更好的方式来释放封闭的工作簿内存。 我正在运行Excel 2013。 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("Shell.Application") 'Get summary folder location Set StartFolder = objShell.BrowseForFolder(0, "Select the folder to summarize", 0, 5) If StartFolder Is Nothing Then Wscript.Quit End If StartFolderName = StartFolder.self.path Set SuperFolder = objFSO.GetFolder(StartFolderName) 'Open Excel Set objExcel […]

用C ++编写的xll的内存分析器

我有一个用C ++编写的Excel插件(编译为xll),我目前怀疑存在某种内存泄漏。 然而,泄漏的大小相对较小,我只能看到Excel运行所有代码几百次后崩溃。 什么是最好的内存分析器程序来确定这种内存泄漏和特定的程序,如何设置分析器,以获得最佳结果?

Office JS setDataAsync函数内存泄漏

当在Excel 2016的Office js的共享API中使用asynchronous函数时,会导致内存泄漏,特别是调用binding.setDataAsnyc ,它永远不会释放写入的数据( 泄漏是在运行Excel中插件的Internet Explorer进程中一个32位版本) )。 例如: //1 Miliion row by 10 columns data parsed from a csv usually in chunks var data = []; var i,j; for (i=0; i<1000000; i++) { row = []; for(j=0; j<10; j++) { row.push("data" + i + "" + j); } data.push(row); } var limit = 10000; var […]

VBA内存问题,同时指定数组的范围

我的目的是分配一个Excel范围的单元格与二维variables数组的值。 分配工作正常,但是我面对一个内存问题(泄漏):当我启动Excel时,这个过程需要或多或less的22个内存。 运行下面的代码(创build一个新的工作簿,分配范围,closures工作簿而不保存)后,该过程需要33 Mo的RAM。 有没有人有一个想法,我在做什么错了? 问候,亚历山大 这里的代码 Option Explicit Sub test() Dim nLines As Long Dim xSize As Long Dim j As Long Dim i As Long 'Creating New Empty Workbook Application.Workbooks.Add Range("A1").Select Application.ScreenUpdating = False nLines = 10000 xSize = 200 Dim myRange As Range Dim myArray() As Variant ReDim myArray(1 To nLines, 1 […]