Erro java.lang.OutOfMemoryError ao ler xml muito grande

Olá pessoal, estou trabalhando com leitura de arquivo xml, usando o framework DOM, estou recebendo o erro java.lang.OutOfMemoryError quando o arquivo que eu preciso ler é muito grande.

Alguém sabe me dizer como resolver esse problema?

Grato, Levi.

Com DOM isto pode realmente acontecer, pois seu comportamento consiste em inicialmente carregar todo o documento XML e em seguida criar uma estrutura completa deste em memória.
Há duas soluções para o seu problema: você pode aumentar os parâmetros Xmx, XX:MaxPermSize, etc da sua aplicação para valores maiores

Ou você pode usar uma API com o SAX, que possui comportamento oposto ao do DOM: esta API lê o documento XML como se fosse um stream e, consequentemente, você difícilmente vai ter problemas de carga pesada de memória.

Olá kicolobo, você disse que dificilmente vou ter problema de carga pesada de memória, você quer dizer que mesmo usando o SAX existe essa possibilidade?

Grato, Levi.

Oi Levi,

com qualquer API sempre há esta possibilidade, mas com o SAX ela diminui significativamente (a quase zero) porque você não vai carregar o documento inteiro em memória, mas sim irá apenas percorrê-lo conforme o stream que o representa for sendo lido.

Amigo, você abriu o tópico duplicado:
http://www.guj.com.br/java/277658-erro-javalangoutofmemoryerror-ao-ler-xml-muito-grande

Enfim, como já falaram:
o DOM irá carregar tudo para memória… não é recomendado utilizá-lo para xmls muito grandes.
Utilize SAX!

10 segundos de Google:
http://javafree.uol.com.br/artigo/12002/Processame...de-documentos-XML-com-SAX.html

[quote=jmmenezes]
10 segundos de Google:
http://javafree.uol.com.br/artigo/12002/Processame...de-documentos-XML-com-SAX.html[/quote]

Agressividade desnecessária com quem tá começando hein?

[quote=kicolobo][quote=jmmenezes]
10 segundos de Google:
http://javafree.uol.com.br/artigo/12002/Processame...de-documentos-XML-com-SAX.html[/quote]

Agressividade desnecessária com quem tá começando hein?[/quote]

Desculpa, se entendeu assim, não foi a intenção… apenas que ele pode procurar mais coisas sobre sax… que esse foi o primeiro que achei…
enfim foi mal… a intenção não foi essa!

Afinal, foi sugerido Sax e já sugerido um artigo que explica o basico, mas com certeza tem outros provavelmente melhores… se pesquisar com mais calma!

Entendi kicolobo, comecei a fazer os testes com o SAX e realmente não estou mais recebendo o erro gerado pelo DOM.

Valew.

:smiley: :smiley: :smiley: :smiley: :smiley:

Foi mal pela duplicação do tópico, foi sem intenção.