GC overhead limit exceeded

4 respostas
A

Olá, pessoal!
Estou desenvolvendo um sistema no qual preciso buscar milhares de registros no banco, verificar todos os dados retornados e modificar alguns.
Porém, recebo a seguinte mensagem de erro quando estou fazendo a busca:

SEVERE: doSelect exception
java.lang.OutOfMemoryError: GC overhead limit exceeded

Estou utilizando JSF e JPA.
Minha intenção é fazer a busca e jogar o resultado em uma lista com a qual trabalharei logo em seguida.
Aqui vai um resumo do meu código fonte:

...
public List<Processo> buscaProcessos() {
            ...
            String query = "SELECT p FROM Processo p ";
            Query q = getEntityManager().createQuery(query);
            return lista = q.getResultList();
            ...
}
...
listaProcessos = todosProcessos.buscaProcessos();
for (Processo p : listaProcessos) {
             ...
}
...

Ficarei muito grato se alguém puder me ajudar.
Obrigado

4 Respostas

W

Alternativas para você:

  • Aumentar sua memória da VM (Xmx/Xms)

  • Usar a paginação:

q.setFirstResult(0);
q.setMaxResults(10);
  • Usar native query e fazer paginação

  • Usar ScrollableResults :

Query q = session.createQuery("select * from ...");
      ScrollableResults results = q.scroll();
       while (results.next() )
       {
         Long id = results.getLong(0);
          ...
        }
      results.close();

fonte: http://herbertwu.wordpress.com/2009/04/24/handling-large-collection-data-–-hibernate-pagination-scrollableresults-and-native-sql/

[]'s

J

Posso estar erra do mas imagino que a pilha da jvm não aguenta carregar todos esses registros aí não. Você precisa paginar o resultado.

A

Olá, Julio!
Obrigado por ter respondido.
Vou pesquisar como fazer para paginar o resultado.
Você indica algum site que mostre como fazer isto?
Obrigado

A

Olá, WRYEL!
Obrigado por ter respondido!
Estive pesquisando e paginação não é uma solução.
Também, não tenho como aumentar a memória da VM.
Vou dar uma olhada no link que você passou sobre ScrollableResults. Talvez aí esteja a solução.
Muito obrigado!

Criado 1 de junho de 2012
Ultima resposta 1 de jun. de 2012
Respostas 4
Participantes 3