Limite da JVM (java heap space na exportação para excel/pdf/csv)

6 respostas
Jardel.morais

Qual é o limite máximo de memória que podemos setar na JVM?

Estou conseguindo no máximo 2536Mb:

JAVA_OPTS=?-server -Xms768m -Xmx2536m?

SO - Ubuntu 64 bits / 6Gb Ram

Não dá pra aumentar mais que isso?
O SO me limita?
Como sair desse problema?

São relatórios gerados e que possuem uma grande massa de dados.

Agradeço a ajuda de quem tiver alguma experiência com isso…
Obrigado desde já

6 Respostas

ViniGodoy

Se seu sistema operacional é de 32 bits, então não adianta ter mais de 4Gb de RAM.
A quantidade máxima endereçável pelo sistema é 2^32-1 bytes, ou 4.294.967.295 bytes.

Como o java trabalha com sinal, não duvido que o limite máximo da VM seja metade disso.

A solução é trocar para um SO e uma VM de 64 bits.

Ainda assim, você precisaria ter um volume realmente gigantesco de informações para lotar esse relatório. Se nem isso está aguentando, seria bom rodar sua aplicação num profiler e descobrir porque a geração está consumindo tanta memória. Na maior parte das vezes é algum tipo de erro bobo de programação.

Jardel.morais

Kra, me desculpe enganei a máquina é 64 bits.

E nesse caso, com 64?

O problema é o usuário querer tirar relatórios de 10 anos, dá cerca de 600.000 linhas na displaytag…

malucocelo

Gera o relatório anual. ex: 2010, 2009 … 200N

maior_abandonado

então te aconselho a fazer paginação…

S

exacto…
sem paginação é impossivel trabalhar com grandes quantidades de dados, imagina a base de dados com o nome de todos os habitantes do Brasil, carregados na memoria da java virtual machine…
nem o servidor dos aligenuas ( ET ) iria aguentar isso

Jardel.morais

Pessoal, boa tarde!

Preciso de mais uma dica com relação a paginação aqui:

A paginação na displaytag foi resolvida utilizando ajax.

Agora, na hora de exportar para csv, excel, pdf o java tem que trazer os dados do banco de uma vez para exportar, não é?

Para exportar está dando java heap space de novo…

Como faço nesse caso?

Mais informações sobre esta dúvida: http://forum.mentaframework.org/posts/list/2514.page

Abraço e obrigado desde já.

Criado 30 de dezembro de 2010
Ultima resposta 24 de jan. de 2011
Respostas 6
Participantes 5