GC overhead limit exceeded

188 views
Skip to first unread message

leandro.m...@gmail.com

unread,
Feb 16, 2018, 2:50:25 PM2/16/18
to JasperReports / iReport Brasil
Prezados, 
estou tentando gerar um relatório com iReport, porém tenho recebido o seguinte erro:
(http-executor-threads - 2) Servlet.service() for servlet controller threw exception: java.lang.OutOfMemoryError: GC overhead limit exceeded.

Mesmo tendo feito a implementação dos seguintes métodos JRFileVirtualizer, JRSwapFileVirtualizer e JRGzipVirtualizer.

O fato é que tenho uma consulta que me retorna uma lista com aproximadamente 71 mil registros, preciso gerar um Excel como relatório, mas em um determinado momento estoura o erro informado.
o erro ocorre exatamente neste trecho do código jp = JasperFillManager.fillReport(report, map, dataSource);

Anexei o arquivo com o código que utilizei e as tentativas feitas.

Obrigado

getReportVirtualizer.txt

Denis - Gmail

unread,
Feb 16, 2018, 8:19:22 PM2/16/18
to jasperreports-...@googlegroups.com

Ola Boa noite


Este erro é gerado durante a geração do relatorio, voce falou que implementou o JRFileVirtualizer poderia postar a classe responsavel por esse procedimento ?. E durante a geração voce acompanhou  se esta gerando realmente fora da jvm ?

--
Você recebeu essa mensagem porque está inscrito no grupo "JasperReports / iReport Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-irepor...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Jivago Silva

unread,
Feb 17, 2018, 4:16:10 PM2/17/18
to JasperReports / iReport Brasil
Nesse caso você tem q aumentar a memoria do server... 

Denis Benjamim

unread,
Feb 18, 2018, 9:55:38 AM2/18/18
to jasperreports-...@googlegroups.com

Mas nesse caso ele só iria aumentar  memória se não fosse usar a virtualização fora da jvm e uma boa prática gerar relatórios fora da memória da vm por exemplo no diretório temp

--
Você recebeu essa mensagem porque está inscrito no grupo "JasperReports / iReport Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-ireport-brasil+unsub...@googlegroups.com.

leandro.m...@gmail.com

unread,
Feb 19, 2018, 7:10:54 AM2/19/18
to JasperReports / iReport Brasil
Ola, no caso qdo uso o JRSwapFileVirtualizer, é gerado um arquivo que qdo chega a 50400kb é gerado o erro de GC Outofmemory.
Nos demais casos, o que pude perceber é que ele só demora mais um pouco para apresentar o erro.

A classe esta no anexo

leandro.m...@gmail.com

unread,
Feb 19, 2018, 7:14:44 AM2/19/18
to JasperReports / iReport Brasil
Vi que gera um arquivo no diretório temp quando implemento o JRSwapFileVirtualizer, porém qdo o arquivo chega a 50400kb é gerado o erro de GC.
Existe outra maneira de acompanhar a geração do arquivo fora da VM?
Nunca tive esse problema, pra mim é nova a situação.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-ireport-brasil+unsub...@googlegroups.com.

Denis - Gmail

unread,
Feb 19, 2018, 9:36:11 AM2/19/18
to jasperreports-...@googlegroups.com

EU NUNCA USEI O JRSWAP VOU DEMOSTRAR A BAIXO PARTE DO CODIGO QUE UTILIZO

private final JRFileVirtualizer fileVirtualizer;

fileVirtualizer = new JRFileVirtualizer(10,System.getProperty("java.io.tmpdir"));


Desta forma a vm gera o arquivo no diretorio padrão para arquivos temporarios de qualquer sistema operacional.
o Primeiro argumento se refere ao tamanho maximo do cache paginado em obejtos.

URL http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/fill/JRFileVirtualizer.html#JRFileVirtualizer-int-
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-irepor...@googlegroups.com.

Denis - Gmail

unread,
Feb 19, 2018, 9:38:36 AM2/19/18
to jasperreports-...@googlegroups.com

Complementando acabei esquecendo de por essa parte final do codigo


cleanup para limpar o cache caso exista algum outro relatorio la

e seto o parametros REPORT_VIRTUALIZAR com o virtualizer em que criei.

Leandro Martins

unread,
Feb 19, 2018, 9:49:33 AM2/19/18
to jasperreports-...@googlegroups.com
estou usando esse no momento:

Imagem inline 1

e estou com o erro 

java.awt.HeadlessException




Sent with Mailtrack

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-ireport-brasil+unsubs...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
--
Você recebeu essa mensagem porque está inscrito no grupo "JasperReports / iReport Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-ireport-brasil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.


--
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "JasperReports / iReport Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/jasperreports-ireport-brasil/PVAm9vS8bnw/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para jasperreports-ireport-brasil+unsub...@googlegroups.com.

Denis - Gmail

unread,
Feb 19, 2018, 4:03:27 PM2/19/18
to jasperreports-...@googlegroups.com

Amigo eu fui epsquisar seu erro mas como nao sei o trace fica dificil de ajudar, voce esta usando o jasperview em jsf ?

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-irepor...@googlegroups.com.

Jivago Silva

unread,
Feb 20, 2018, 6:26:25 AM2/20/18
to JasperReports / iReport Brasil
"preciso gerar um Excel como relatório" já que é uma planilha pq não usar uma API própria pra isso..

Na empresa aqui usamos esta: Apache POI

O ireport apenas para relatórios em PDF 


Em sexta-feira, 16 de fevereiro de 2018 16:50:25 UTC-3, leandro.m...@gmail.com escreveu:

Leandro Martins

unread,
Feb 20, 2018, 9:08:31 AM2/20/18
to jasperreports-...@googlegroups.com
Olá Denis, tudo bem?
Consegui contornar o erro, aumentei a memória do Jboss e verifiquei que o método gerava um .xls, ou seja tenho 71 mil linhas tentando gerar em um arquivo que tem somente 65 mil.
Feito isto, agora tenho um outro problema, estou usando JRXlsxExporter e esta demorando 24 minutos para exportar o para o excel as 71 mil linhas e são 17 colunas no método exportReport().

Conhece alguma forma de agilizar essa exportação?

Estou pesquisando mas não estou achando nada em relação a melhoria de performance.

Obrigado pela ajuda !



Sent with Mailtrack

--
Você recebeu essa mensagem porque está inscrito em um tópico no grupo "JasperReports / iReport Brasil" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/jasperreports-ireport-brasil/PVAm9vS8bnw/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para jasperreports-ireport-brasil+unsubs...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
--
Você recebeu essa mensagem porque está inscrito no grupo "JasperReports / iReport Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-ireport-brasil+unsub...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Denis - Gmail

unread,
Feb 20, 2018, 11:28:14 AM2/20/18
to jasperreports-...@googlegroups.com

Acredito que demore por nao esta mais usando a memoria RAM para gerar os arquivos. Porem 24minutos? É realmente necessario gerar 71 mil registros?. Leu o comentario do colega sobre o apache poi ? Por sinal o jasper report usa ele mesmo para geração da planilha eletronica, eu testaria usar a biblioteca diretamente para a geração destes dados sem o jasper no meio.

Acho que voce precisa rever essa necessidade de tantos registros em uma planilha e pensar em caso de dividir talvez.

Tentar gerar a planilha usando a biblioteca do apache poi diretamente.

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-irepor...@googlegroups.com.

Leandro Martins

unread,
Feb 21, 2018, 12:44:48 PM2/21/18
to jasperreports-...@googlegroups.com
Olá Denis, 

Consegui resolver aqui, a questão da lentidão.

Imagem inline 1

Imagem inline 2

o código, ficou como acima.
Obrigado



Sent with Mailtrack

Denis - Gmail

unread,
Feb 21, 2018, 2:38:08 PM2/21/18
to jasperreports-...@googlegroups.com

Que bom que deu certo

Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para jasperreports-irepor...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages