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 楼答案
爪哇。lang.OutOfMemoryError:超出GC开销限制:当GC无法在连续循环中释放对象时,会出现此错误。可以在vm启动参数中指定限制
这意味着在你的引用中使用宏是很强的,不符合GC的条件。在没有宏的情况下,相同的对象符合GC的条件
您需要研究为什么在添加宏时,可以访问引用