Tag: 内存

java.lang.OutOfMemoryError:使用XLSReader将Excel文件读入java bean时的Java堆空间

我得到java.lang.OutOfMemoryError:在使用XLSReader读取Excel文件到Java bean时的Java堆空间 这是代码片段。 public static <T> List<T> parseExcelFileToBeans(final File xlsFile, final File jxlsConfigFile) throws Exception { final XLSReader xlsReader = ReaderBuilder.buildFromXML(jxlsConfigFile); final List<T> result = new ArrayList<>(); final Map<String, Object> beans = new HashMap<>(); beans.put("result", result); try (InputStream inputStream = new BufferedInputStream(new FileInputStream(xlsFile))) { xlsReader.read(inputStream, beans); } return result; }

Excel XLL插件可以有多less内存?

我正在使用C ++编写Microsoft Excel的.XLL插件,在XLW库的帮助下。 我的操作系统是Windows 7 64位版本,32 GB RAM; 但我的Excel是Excel 2010,32位版本。 使用GlobalMemoryStatusEx检查,它显示XLL中的代码只能看到大约1200 MB的可用虚拟内存(来自struct _MEMORYSTATUSEX中的 ullAvailVirtual ),尽pipe可用的物理内存( ullAvailPhys )大约为23 GB。 由于我的代码需要相当多的内存(每个计算线程大约100MB),所以在发出12个线程之后,它会遇到错误的分配错误。 有没有办法增加可用内存? 这是Excel XLL插件的限制吗? 在控制台应用程序中, GlobalMemoryStatusEx报告大约2034 MB可用的虚拟内存。 这是XLW library的限制吗? 这是32-bit Excel的限制吗?

从内存数组读取信息到Excel表单公式中

我想从我的VBA内存中存储的数组中直接使用数据到我的工作表中的公式中。 作为一个例子,我想避免使用Application.vlookup()打印到每个单元格,因为这是慢的。 而是做一些如下所示 Sub MySub() Dim MyArrayStoredInVBaMemory() As Variant MyArrayStoredInVBaMemory = Array(1, 2, 3, 4, 5, 6, 7, 8, 9) Cells(1, 1).Value = 1 Cells(1, 2).FormulaR1C1 = "=vlookup(RC1,MyArrayStoredInVBaMemory,1,0)" Cells(1, 2).Copy Cells(1, 2).PasteSpecial xlPasteValues Application.CutCopyMode = False End Sub 你的帮助表示赞赏。

VBA:将对象添加到集合会增加内存使用量

我不喜欢在这样的论坛上提问,因为我相信每一个问题都在我面前提出,所以我只是使用search。 但现在我觉得自己有点愚蠢,因为这是我第一次没有find答案。 我有一个基于一段代码的简单问题: Dim demo_1, demo_2 As Variant 'declare the variables Dim DataCollection As Collection 'declare the collection Set DataCollection = New Collection 'define the collection demo_1 = import_demo(1, nb_var) 'load first dataset (+250 mb of memory) demo_2 = import_demo(2, nb_var) 'load second dataset (+250 mb of memory) 所以总的来说,我的程序使用了500MB的内存。 现在我想填充我的集合引用这个对象: DataCollection.Add demo_1 'adding reference to […]

试图用Apache POI编写一个Excel文件导致OutOfMemoryError

我有一个写一个excel文件的程序。 它使用Apache POI编写Excel 2007文件(我有超过256列,所以我必须使用它)。 该程序工作。 我已经在非常小的文件上进行了testing,但是如果使用更多的行,则会耗尽内存。 这是堆栈跟踪: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.io.ByteArrayOutputStream.write(Unknown Source) at org.apache.poi.openxml4j.opc.internal.MemoryPackagePartOutputStream.write(MemoryPackagePartOutputStream.java:88) at org.apache.xmlbeans.impl.store.Cursor._save(Cursor.java:590) at org.apache.xmlbeans.impl.store.Cursor.save(Cursor.java:2544) at org.apache.xmlbeans.impl.values.XmlObjectBase.save(XmlObjectBase.java:212) at org.apache.poi.xssf.usermodel.XSSFSheet.write(XSSFSheet.java:2480) at org.apache.poi.xssf.usermodel.XSSFSheet.commit(XSSFSheet.java:2439) at org.apache.poi.POIXMLDocumentPart.onSave(POIXMLDocumentPart.java:196) at org.apache.poi.POIXMLDocumentPart.onSave(POIXMLDocumentPart.java:200) at org.apache.poi.POIXMLDocument.write(POIXMLDocument.java:204) at model.Conversione.traduzioneFile(Conversione.java:219) at model.Main.scriviFile(Main.java:75) at model.Main.main(Main.java:51) 发生错误(根据stacktrace)在我写“workbook.write(fileOut)”的地方,其中fileOut是一个FileOutputStream。 这意味着所有java对象都有足够的内存来存储excel文件,但是由于某些原因,在写入硬盘时,它必须占用更多的内存。 只是告诉你,我已经试图增加Java堆大小,直到1演出(通过添加-Xms128m -Xmx1024m),但似乎还没有做的tric。 帮帮我! 吴 代码示例: .. import org.apache.poi.ss.usermodel.Row; […]

由于可旋转的caching,excel无法完成此任务

当我完成了我的excelmacros,我感到兴奋,然后我的老板递给我一个更大的文件来尝试和testing。 尺寸差异从15,000KB到275,000KB。 我只是希望它会继续运行。 我错了。 我得到“Excel无法完成此任务与可用资源”错误。 所以我们尝试在我的同事8core 16GB RAM机器上运行它。 想到这一点将会把它从公园里拿出来。 不。 这次在第二个数据透视表上也是一样的错误。 所以,我假设错误是在我的pivottable函数。 有没有办法来清理创build像清除caching或类似的东西? Function CPT(ByRef Location() As String, Name As String, Data As String, ByRef Filters() As String, ByRef Rows() As String, ByRef Columns() As String _, ByRef Values() As String, ByRef Types() As String) ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ Data, Version:=xlPivotTableVersion15).createPivotTable _ TableDestination:=Worksheets(Location(0)).Range(Location(1)), TableName:=Name, _ DefaultVersion:=xlPivotTableVersion15 […]

与java虚拟机和excel结合的matlab运行时applet的内存问题

当我在excel中运行一个特定的工作簿时,我的同事也没有遇到任何问题,它调用一个由java虚拟机驱动的matlab运行时applet。 当它试图运行程序时,我得到这个错误消息: 这些是我的Java设置: 我发现了一个线程,解决了类似的问题,其中解决scheme是更改Java运行时参数(如您可以在第二个图像中看到的),以允许更多的内存。 它没有在我的电脑上工作。 由于它是在我的同事电脑上工作,我开始计算出我的电脑和电脑之间有什么相关的区别,我能find的唯一区别是他们在电脑上有完整的授权Matlab,而我没有。 除了这个Matlab运行时,我有。 哪个程序导致错误,他们使用相同的小程序,但不会得到这个错误。 我们都有32GB RAM和32位操作系统。 我的一个同事偶尔遇到同样的错误,但并不总是,他的机器上也没有像我这样的完整的Matlab。 其他两名同事拥有完整的Matlab,从来没有遇到错误。 你有什么想法如何解决这个问题? 提前致谢,我希望你们都有一个伟大的新年。

如何在VBA中释放对象并清除内存

这是我第一次张贴加一个业余程序员,所以让我知道你是否需要任何额外的信息。 我有以下问题: 用excel VBA连接到另一个程序(即Aspen EDR)。 为此我有一个相应的加载项安装。 访问Aspen EDR我需要添加一个对象。 IM完成后,我想释放对象来保存一些内存。 我尝试的第一件事是这样的: Dim ObjEDR As BJACApp Dim Path As String Path = 'assume this is the correct path to the file i want to open Set ObjEDR = New BJACApp ' Create the BJAC object If Not ObjEDR.FileOpen(Path) Then MsgBox "Can't open file!" End If '… Set […]

Apache POI – 双击Excel中的单元格,字体颜色恢复为默认的字体颜色(黑色)

我正在使用Apache POI 3.9以编程方式生成xlsx格式的excel。 对于特定的列,所有的单元格值应该是蓝色的字体。 我的表有1500多行,最less50列。 我有一个返回blueFont颜色样式的方法。 代码如下: public CellStyle createBlueFont(){ CellStyle fontStyle = workbook.createCellStyle(); // Creates new style Font blueFont = workbook.createFont(); // Creates new font blueFont.setColor(HSSFColor.BLUE.index); fontStyle.setFont(blueFont); fontStyle.setWrapText(true); return fontStyle; } 每次创build单元格时都会调用上述方法。 Excel生成没有任何例外。 但是,当我双击有蓝色字体填充的单元格时,它会自动恢复为黑色(默认颜色)。 我通过全局创build样式和字体来解决这个问题。 我不明白为什么我的老方法是错误的。 注:我正在使用SXSSF库进行工作簿和电子表格创build。 有人能解释我在我以前的代码错了吗? 谢谢阿斯维尼J

删除图片中可能的对象关系? 尝试xlCopy与内存限制

我有一个程序,复制单元格和覆盖地图。 正在复制的区域具有颜色渐变条件,大量数据和重叠的图片对象。 使用代码: range.CopyPicture Appearance:=xlScreen, Format:=xlPicture 使用xlPicture导致代码不能粘贴,并有各种excel错误,如内存和资源限制命中。 range.CopyPicture Appearance:=xlScreen, Format:=xlBitmap XlBitmap另一方面消除了这个错误。 我知道有很多实体要抄袭。 截图是否考虑到捕获范围内的对象属性? 如果有的话,是否有办法减less负载或删除计算?