Problema com List e grande volume de registros

8 respostas
touresfinge

Oi pessoal, tou precisando de um Help.

Tenho algumas informações em um BD e preciso gerar um TXT c elas.
Eu busco essas informações e carrego em um List.

O problema é q qdo essas informações são muitooos registros, tipo 500.000,
a List da pau.

Da:

Exception occurred during event dispatching:

java.lang.OutOfMemoryError: Java heap space

at java.awt.image.DataBufferInt.(DataBufferInt.java:41)

at java.awt.image.Raster.createPackedRaster(Raster.java:458)

at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)

at java.awt.image.BufferedImage.(BufferedImage.java:321)

at com.sun.java.swing.plaf.windows.XPStyle$SkinPainter.createImage(XPStyle.java:568)

at sun.swing.CachedPainter.paint0(CachedPainter.java:124)

at sun.swing.CachedPainter.paint(CachedPainter.java:96)

at com.sun.java.swing.plaf.windows.XPStyle$Skin.paintSkin(XPStyle.java:518)

Alguem sabe como eu posso resolver isso???

Desde ja muito obrigado a todos.

8 Respostas

erickcellani

touresfinge
O seu problema não está no List… acontece que a VM não consegue mais alocar espaço na sua heap…
no eclipse, vc pode editar o “Run” da sua aplicação…
tem lá uns argumentos vc pode adicionar em “VM Arguments”:

-Xms[valor] é um parâmetro da VM.

touresfinge

Isso mesmo kra, muitooo obrigaduuuuu!

Resolvido eu aumentei a heap!

Rafael_Nunes

Ja pensou em paginar essa busca, otimizar a interação com arquivos com BufferedWriter, etc?

Afinal, provavelmente no servidor de produção você terá de aumentar o tamanho a heap também, e a tendência da massa de dados é sempre crescer.

touresfinge

Gostaria de aprender isso sim, vc onde eu consigo um bom material sobre?

fabim

No Oracle vc consegue implementar uma paginação com ROWNUM.
No MySql isso pode ser feito com LIMIT - OFFSET

Rafael_Nunes

http://java.sun.com/j2se/1.4.2/docs/api/java/io/BufferedWriter.html
http://www.exampledepot.com/egs/java.io/AppendToFile.html

erickcellani

Rafael Nunes:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/BufferedWriter.html
http://www.exampledepot.com/egs/java.io/AppendToFile.html

tbm acho que o buffer é mais indicado para este caso!

sergiotaborda

touresfinge:
Oi pessoal, tou precisando de um Help.

Tenho algumas informações em um BD e preciso gerar um TXT c elas.
Eu busco essas informações e carrego em um List.

O problema é q qdo essas informações são muitooos registros, tipo 500.000,
a List da pau.

Da:

Exception occurred during event dispatching:

java.lang.OutOfMemoryError: Java heap space

at java.awt.image.DataBufferInt.(DataBufferInt.java:41)

at java.awt.image.Raster.createPackedRaster(Raster.java:458)

at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)

at java.awt.image.BufferedImage.(BufferedImage.java:321)

at com.sun.java.swing.plaf.windows.XPStyle$SkinPainter.createImage(XPStyle.java:568)

at sun.swing.CachedPainter.paint0(CachedPainter.java:124)

at sun.swing.CachedPainter.paint(CachedPainter.java:96)

at com.sun.java.swing.plaf.windows.XPStyle$Skin.paintSkin(XPStyle.java:518)

Alguem sabe como eu posso resolver isso???

Esse erro ai é no look and feel. Parece que está tentando criar uma imagem demaziado grande.
Quanto a lista de muitos dados simplesmente não use. Use o recordSet directamente.
Em alternative implemente um objeto com a interface List que encapsula um RecordSet

Criado 11 de abril de 2008
Ultima resposta 11 de abr. de 2008
Respostas 8
Participantes 5