有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVAlang.OutOfMemoryError:通过Apache POI读取启用宏的excel工作表时,GC开销超出了错误限制

我有一个XLSM格式的启用了宏的Excel文件。在这个excel中,有2-3个相关的下拉列表。我已经编写了一个宏代码来停止删除特定列

我正在使用以下代码上载此excel

XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(fileName)); XSSFSheet sheet = workbook.getSheetAt(1); XSSFRow row; XSSFCell cell; int rows = sheet.getPhysicalNumberOfRows();

但它给出了一个错误:

java.lang.OutOfMemoryError: GC overhead limit exceeded com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.getNodeObject (DeferredDocumentImpl.java:972) com.sun.org.apache.xerces.internal.dom.DeferredElementNSImpl.synchronizeD ata(DeferredElementNSImpl.java:126) com.sun.org.apache.xerces.internal.dom.ElementNSImpl.getNamespaceURI(Elem entNSImpl.java:250)

在没有宏的情况下上载时,不会出现错误,工作正常


共 (1) 个答案

  1. # 1 楼答案

    爪哇。lang.OutOfMemoryError:超出GC开销限制:当GC无法在连续循环中释放对象时,会出现此错误。可以在vm启动参数中指定限制

    这意味着在你的引用中使用宏是很强的,不符合GC的条件。在没有宏的情况下,相同的对象符合GC的条件

    您需要研究为什么在添加宏时,可以访问引用