Java-使用POI在xls中处理25000条及以上记录时出现内存溢出异常错误

Java-使用POI在xls中处理25000条及以上记录时出现内存溢出异常错误,java,oracle11g,apache-poi,jxls,Java,Oracle11g,Apache Poi,Jxls,我们尝试将堆内存增加到512 MB。但问题仍然存在。我们将其用作Oracle数据库中的Java存储过程。请参考源代码 XLSTransformer transformer = new XLSTransformer(); InputStream is = pTemplate.getBinaryStream(); // seems to be slow for large resultsets HSSFWorkbo

我们尝试将堆内存增加到512 MB。但问题仍然存在。我们将其用作Oracle数据库中的Java存储过程。请参考源代码

        XLSTransformer transformer = new XLSTransformer();          
        InputStream is = pTemplate.getBinaryStream();

        // seems to be slow for large resultsets
        HSSFWorkbook resultWorkbook = transformer.transformXLS(is, beans);
        is.close();
        // write output stream to CLOB          
        java.io.OutputStream os = newBlob.setBinaryStream(1L);          
        os.flush();

您可以发布OOM stacktrace并告诉我们这段代码在做什么(XLSTransformer、pTemplate、beans等)?您可以添加一个选项来在OOM上转储堆,并使用Eclipse内存分析器(或类似工具)检查堆的使用情况。可能有助于发现意外问题。还有一个问题:在完成编写之后尝试关闭流,如果不再使用,则调用“free()”。如果我记得清楚的话,oracle JDBC驱动程序和blob存在一个问题。Apache POI中没有类
XLSTransformer
,这是从哪里来的?如果只使用普通的Apache POI类,问题会消失吗?对于XLSTransformer,请参考net.sf.jxls.transformer.XLSTransformer;