1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Java Heap Space na Criação de Planilhas do Excel

Estou com um problema para criar uma Planilha do Excel utilizando o pacote Apache POI. A planilha que quero criar é relativamente grande (aprox. 73k linhas), e o Java retorna o erro "Java heap space". Utilizo Eclipse, e o código q estou trabalhando roda no Tomcat. O erro sempre é retornado de umas das linhas de inserção de célula. Segue o código que estou utilizando.

        ServletOutputStream sos = getResponse().getOutputStream();
        XSSFWorkbook wrk = new XSSFWorkbook();
        XSSFSheet sheet = wrk.createSheet("Risco");

        List<Bean> list = getList()

        int i = 1;
        for(Bean b : list){

            row = sheet.createRow(i);
            row.createCell(0).setCellValue(b.getAtributo1);
            row.createCell(1).setCellValue(b.getAtributo2);
            row.createCell(2).setCellValue(b.getAtributo3);
            row.createCell(3).setCellValue(b.getAtributo4);
            row.createCell(4).setCellValue(b.getAtributo5);
            row.createCell(5).setCellValue(b.getAtributo6);
            row.createCell(6).setCellValue(b.getAtributo7);
            row.createCell(7).setCellValue(b.getAtributo8);

            i++;
        }
        wrk.write(sos);
        wrk.close();

        sos.flush();
        sos.close();

e o erro do console

Caused by: 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:369) at org.apache.poi.xssf.usermodel.XSSFCell.setCellValue(XSSFCell.java:333) at sicoob.manager013.gerad.risco.RiscoController.gerarRelatorioComparativo(RiscoController.java:261) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at core.servlet.ControllerServlet.abrirTela(ControllerServlet.java:113) at core.servlet.ControllerServlet.doExecute(ControllerServlet.java:90) at core.servlet.ControllerServlet.doPost(ControllerServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at core.filter.UrlRewriterFilter.doFilter(UrlRewriterFilter.java:39) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

Alguém pode me ajudar?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags apache excel java ou faça a sua própria pergunta.