0
我有一个以XLSM格式启用宏的Excel文件。在这个excel里面,有2-3个依赖下拉列表。我写了一个宏代码来停止删除特定的列。java.lang.OutOfMemoryError:超出GC开销限制通过Apache POI启用Excel启用Excel表单时发生错误
我使用下面的代码上传这个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
\t com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.getNodeObject
(DeferredDocumentImpl.java:972)
\t com.sun.org.apache.xerces.internal.dom.DeferredElementNSImpl.synchronizeD
ata(DeferredElementNSImpl.java:126)
\t com.sun.org.apache.xerces.internal.dom.ElementNSImpl.getNamespaceURI(Elem
entNSImpl.java:250)
虽然没有上载的宏,没有错误和工作的罚款。
那么,我现在应该怎么做? –
由于您正在使用宏来停止/删除特定的列,因此您要保持对象的强壮性。在apache poi中获取GC开销是一个常见错误。一些解决方案:https://stackoverflow.com/questions/36389920/java-apache-poi-memory-leak-with-excel-files –