Java.lang.OutOfMemoryError: Java heap space

6 respostas
bethinha

Olá!

Tenho um relatório com 5 subreports , quando o conteúdo de cada subreports é pequeno o relatório sai sem erros, mas quando o conteúdo dos subreports é grande ocorre este erro “ava.lang.OutOfMemoryError: Java heap space”.
Alguém sabe como solucionar este problema?

Obrigada a todos!

6 Respostas

gibaholms

Entao betinha

Isso deve ocorrer porque seus relatórios provavelmente são relativamente grandes. Num mapeamento objeto-relacional, se você compuser todos os objetos completos, imagina um objeto que carrega uma lista de objetos, que carrega outra lista de objetos, que carrega mais 3 listas de objetos… e assim vai, até estourar o Heap.

Ai vc pode tentar um System.gc() a cada final de laço sempre que possível (leia um pouquinho sobre coleta de lixo no java)… da uma lidinha nesse artigo também:

http://www.eclipsezone.com/eclipse/forums/t61618.html

Se não der certo mesmo assim, ai voce terá que segmentar sua coleta de dados.

abraço!

bethinha

Olá Gibaholms!
obrigada pela ajuda, mas não entendi onde posso estar utlizando o “System.gc()”.
pode me ajudar novamente?

Abraços!

gibaholms

use sempre antes de hidratar um objeto… depois que imprimir esse objeto no relatorio, seta ele como null, chama o System.gc() novamente e depois hidrata outro.

R

Veja quanto de memória está reservada sua JVM… se puder aumentar… aumente-a.

[]´s

ViniGodoy

Algumas dicas:

  1. Use um profiler para se alguma classe de negócio sua não está criando objetos desnecessariamente. Também veja se não há como, após usar parte dos dados, descarta-los;
  2. Tente usar a técnica de lazy-loading em listas de objetos, se seu mapeamento não fizer isso para você. Assim você evita carrega-las desnecessariamente;
  3. Por padrão, a VM está autorizada a usar apenas 64mb. Você pode alterar a inicialização da VM. Por exemplo, para deixar a aplicação usar 200MB faça:
    start javaw -Xmx200m -jar seuJar.jar
bethinha

Pessoal , obrigada pela ajuda, mas agora está ocorrendo um novo erro “Subreport overflowed on a band that does not support overflow” !!! :cry:

coloquei o subrelatório , no columnfooter, no pagefooter, o scriptlet está desabilitado, Ordem de Impressão está como Vertical, já não sei mais o que alterar, :frowning:

alguém tem uma solução para o meu subrelatório?!

Obrigada!!!

Criado 5 de março de 2008
Ultima resposta 7 de mar. de 2008
Respostas 6
Participantes 4