Java.lang.OutOfMemoryError: GC overhead limit exceeded

Pessoal,

Estou tentando transformar um arquivo em XML (O arquivo tem 500 MB) quando rodo da o seguinte erro:

Meu código:

[code]public class Main {

public static void main(String[] args) {
    XStream xstream = new XStream();
    List valores = new ArrayList();
    BufferedReader br = null;
    try {
        String fileName = "arquivo4.txt";
        br = new BufferedReader(new FileReader(fileName));
        SequenceIterator stream = SeqIOTools.readFastaDNA(br);
        while(stream.hasNext()){
            try {
                org.biojava.bio.seq.Sequence seq = stream.nextSequence();
                //valores.add(seq);
                DNA dna = new DNA();
                dna.setNome(seq.getName());
                dna.setSequencia(seq.seqString());
                dna.setQualidade(seq.seqString());
                valores.add(dna);
                //System.out.println("Nome: " + seq.getName() + "\tURN: " + seq.seqString());
            } catch (NoSuchElementException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            } catch (BioException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


    } catch (FileNotFoundException ex) {
        Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        try {
            br.close();
        } catch (IOException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    String contatosEmXML = xstream.toXML(valores);
    System.out.println("\nContatos em XML:");
    System.out.println(contatosEmXML);
    
}

}
[/code]

Alguém tem alguma ideia ?

Obrigado,

Marcelo Gomes

Eu mudei o código, e funcionou … coloquei para gravar a cada linha lida… mas queria saber em casos em que nao tem como fazer isso e que da esse problema como solucionar… por exemplo quando quero tratar uma imagem grande…

Obrigado,

Marcelo Gomes

Opa Marcelo, não tenho certeza, mas creio que se vc adicionar os argumentos -Xms256M -Xmx512M na hora em que vc executar sua aplicação (caso nao funcione, tente valores maiores) irá funcionar.

Tente usar streams de objetos: http://xstream.codehaus.org/objectstream.html

Tenta esse aqui.

-XX:-UseGCOverheadLimit

Funcionando ou não continua postando ai.