OutOfMemoryError

Oi, galera!

Se puder me ajudar, estou tentando gerar um relatório com o iReport a partir de uma consulta sql e dependendo da quantidade de dados me é apresentado o erro OutOfMemoryError.

Alguém de vcs saberia como me ajudar?

Você já tentou startar a sua aplicação utilizando os parâmetros -Xms e -Xmx?

http://blogs.sun.com/roller/resources/watt/jvm-options-list.html

Mas como farei isso?

estou utilizando o JBoss 3.2.6 por dentro do eclipse 3.0.

Para passar parâmetros -Xmx e
-Xms para o Eclipse é necessário modificar o "shortcut’ que inicia o Eclipse. Em vez de simplesmente ter algo no seu shortcut como

C:\java\eclipse\eclipse.exe

você deve fazer algo como:

C:\java\eclipse\eclipse.exe -vm c:\j2sdk1.4.2_06\jre\bin\javaw.exe -vmargs -Xmx512m

por exemplo. (-vm é o nome do seu java.exe ou javaw.exe, -vmargs são as opções que serão repassadas ao java.exe ou javaw.exe.

Não sei como é em Linux, mas não deve ser muito diferente.

Mesmo startando com estes parametros a aplicação continua a gerar o OutOfMemoryError.

Qual eh a quantidade de dados? 1gb?

Rafael

Deve dar aproximadamente 300MB.

Qto vc tem de memória nessa máquina?

Bom, se ta dando OOM, eh pq vc esta tentando buferizar mais dados que o suportado pela ram configurada para o container.

Passe -Xms400m, alem do -Xmx512m

Rafael

Mesmo setando o maximo de memória da máquina continuo tendo este problema.

A exceção esta sendo gerada quando o aplicativo entra na seguinte linha de comando:

//arq = arquivo .jasper;
//parametros = HashMap com o titulo e o arquivo de imagem da logo 
//do relatório;
//datasource = JRResultSetDataSource com o ResultSet da pesquisa
JasperPrint jp = JasperFillManager.fillReport(arq, parametros,datasource);

Acho que erro esta sendo gerado pq o jasper esta armazenando todo o objeto que ele gera para o relatório na memória. Sendo assim acho que a solução seria fazer com que o jasper fosse imprimindo parte do relatório por vez e não o relatório inteiro como ele faz, mas essa solução eu realmente não sei como implementar, se vcs puderem ajudar…