Problema com List e grande volume de registros  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
touresfinge
Debugger
[Avatar]

Membro desde: 08/06/2006 10:14:23
Mensagens: 74
Offline

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.<init>(DataBufferInt.java:41)
at java.awt.image.Raster.createPackedRaster(Raster.java:45
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
at java.awt.image.BufferedImage.<init>(BufferedImage.java:321)
at com.sun.java.swing.plaf.windows.XPStyle$SkinPainter.createImage(XPStyle.java:56
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:51

Alguem sabe como eu posso resolver isso???


Desde ja muito obrigado a todos.

Odair Menezes.
[MSN]
erickcellani
JavaEvangelist
[Avatar]

Membro desde: 13/05/2006 13:37:12
Mensagens: 425
Localização: São Paulo - SP
Offline

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.

--
Érick F. Cellani
[MSN]
touresfinge
Debugger
[Avatar]

Membro desde: 08/06/2006 10:14:23
Mensagens: 74
Offline

Isso mesmo kra, muitooo obrigaduuuuu!

Resolvido eu aumentei a heap!

Odair Menezes.
[MSN]
Rafael Nunes
Moderador
[Avatar]

Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline

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.

------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."

http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
[Email]
touresfinge
Debugger
[Avatar]

Membro desde: 08/06/2006 10:14:23
Mensagens: 74
Offline

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

Odair Menezes.
[MSN]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

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


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

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
Rafael Nunes
Moderador
[Avatar]

Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline

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

------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."

http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
[Email]
erickcellani
JavaEvangelist
[Avatar]

Membro desde: 13/05/2006 13:37:12
Mensagens: 425
Localização: São Paulo - SP
Offline

Rafael Nunes wrote: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!

--
Érick F. Cellani
[MSN]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

touresfinge wrote: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.<init>(DataBufferInt.java:41)
at java.awt.image.Raster.createPackedRaster(Raster.java:45
at java.awt.image.DirectColorModel.createCompatibleWritableRaster(DirectColorModel.java:1015)
at java.awt.image.BufferedImage.<init>(BufferedImage.java:321)
at com.sun.java.swing.plaf.windows.XPStyle$SkinPainter.createImage(XPStyle.java:56
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:51

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

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team