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
sulito
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 é?