【问题标题】:Java heap space even use -Xmx1024mJava堆空间甚至使用-Xmx1024m
【发布时间】:2022-06-16 16:49:16
【问题描述】:

在我的项目中,我试图在 DB2 中复制一个大文件并转换为 Excel xlsx,但我遇到了线程“main”java.lang.OutOfMemoryError: Java heap space 中的异常问题。我尝试使用 -Xmx1024m 但不起作用。该文件有 1000000 条记录,并在 6043 条记录中停止。

int 索引 = 1;

    while (rs.next()) {
        XSSFRow row = sheet.createRow((short) index);
        for (int i = 0; i < columns; i++) {
            System.out.println(rs.getObject(i + 1).toString());
            XSSFCell cell = row.createCell((short) i);
            cell.setCellValue(rs.getObject(i + 1).toString());
            cell.setCellStyle(cellStyle2);

           // System.out.println("///// INDEX :  >>  " + index);
        }

        index++;
        
    }

我的错误:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.resize(Saver.java:1700)
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.preEmit(Saver.java:1303)
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.emit(Saver.java:1190)
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.emitElement(Saver.java:962)
        at org.apache.xmlbeans.impl.store.Saver.processElement(Saver.java:476)
        at org.apache.xmlbeans.impl.store.Saver.process(Saver.java:307)
        at org.apache.xmlbeans.impl.store.Saver$TextSaver.saveToString(Saver.java:1864)
        at org.apache.xmlbeans.impl.store.Cursor._xmlText(Cursor.java:546)
        at org.apache.xmlbeans.impl.store.Cursor.xmlText(Cursor.java:2436)
        at org.apache.xmlbeans.impl.values.XmlObjectBase.xmlText(XmlObjectBase.java:1500)
        at org.apache.poi.xssf.model.SharedStringsTable.getKey(SharedStringsTable.java:134)
        at org.apache.poi.xssf.model.SharedStringsTable.addEntry(SharedStringsTable.java:180)
        at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:350)
        at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:320)
        at fileconvertorv010.GerarExcel.<init>(GerarExcel.java:121)
        at fileconvertorv011.Main.main(Main.java:33)
Java Result: 1

【问题讨论】:

  • 那些rs.getObject(i + 1).toString() 字符串有多大?每个行/单元格都有相关的开销,因此 100 万条记录可能需要 10 GB 堆。

标签: java


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
相关资源
最近更新 更多