| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2008 07:39:07
|
henriquedamota
JavaChild
![[Avatar]](/images/avatar/9d372218b5e84b898f1c66bed395ae77.jpg)
Membro desde: 24/05/2007 01:19:12
Mensagens: 123
Offline
|
A ferramenta que estamos desenvolvendo propõe-se a converter os dados da pesquisa PNAD do IBGE,
de um formato proprietário utilizado pelo programa estatístico denominado SAS, para formatos mais acessíveis.
Dois desses formatos são .xls e .mdb (Excel e Access respectivamente).
Para realizar essa conversão estou utilizando duas APIs para Java que manipulam arquivos Excel e Access.
A API JXL para Excel e a JACKCESS para Access.
Pois bem, o que está acontecendo é que para conversões de grande porte, ou seja, quando o arquivo de dados de entrada possui muitas linhas (o maior possui mais de 400.000), a memória vai enchendo até que aconteça um estouro de memória ou o travamento do sistema operacional, por super utilização da memória disponível.
O problema é que nessas APIs, parece que os dados que estão sendo lidos, vão sendo armazenados na memória
da máquina virtual (VM) até que todo o arquivo com os dados de entrada tenha sido lido e, por isso,
acontece o estouro de memória.
Para a conversão para o formato CSV (separado por vírgulas), esse problema não acontece,
provavelmente por que ele grava uma linha e já elimina os dados da memória para ler a próxima linha.
Bom se alguem puder me dar uma luz agradeço!
Muito Obrigado galera ! absss !
|
Henrique da Mota Silveira
Análise e Desenvolvimento de Sistema - FT - UNICAMP 2008 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2008 07:43:05
|
eduveks
GUJ Ranger
![[Avatar]](/images/avatar/bce9abf229ffd7e570818476ee5d7dde.png)
Membro desde: 19/04/2005 07:45:40
Mensagens: 831
Localização: Lisboa - Portugal
Offline
|
então o único jeito é aumentar a memória do Java, com o:
java -Xmx1000m -jar xpto.jar
This message was edited 2 times. Last update was at 28/05/2008 07:44:05
|
http://www.cajuscript.org
http://eduveks.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2008 07:51:14
|
henriquedamota
JavaChild
![[Avatar]](/images/avatar/9d372218b5e84b898f1c66bed395ae77.jpg)
Membro desde: 24/05/2007 01:19:12
Mensagens: 123
Offline
|
Então cara... aumentei ate o limite por ai e num deu... travou o windows.
Cara num teria como eu fazer como eu fazer de um jeito q não fique enchendo a memória que nem o CSV ? Mesmo que demorasse um pouco mais para processar tudo, mas seria o ideial deixar o sistema com escalabilidade.
Abraços !
|
Henrique da Mota Silveira
Análise e Desenvolvimento de Sistema - FT - UNICAMP 2008 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2008 08:07:15
|
fviana
JavaChild
![[Avatar]](/images/avatar/58f1e2bfc0c0c182f1afdab7cae02402.png)
Membro desde: 09/06/2005 09:19:51
Mensagens: 116
Offline
|
cara, vc já deu uma lida na doc. da api pra ver se há alguma configuração que faltou?
tente abrir ou baixar na net o codigo dessas api's, verifique se há prolemas no codigo e tente extender pra corrigir.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2008 08:29:20
|
RicardoCobain
JavaChild
![[Avatar]](/images/avatar/78e3b5ca79e1d3688b73c13540b5c261.jpg)
Membro desde: 21/06/2007 16:05:01
Mensagens: 147
Offline
|
Acho que esses APIs devem ter alguma configuração para carregar esse documento em Blocos... de 2 em 2 MB poe exemplo..
Isso existe quando se trabalha com XML.
|
Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: CriativaSoft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire
Mentawai Developer
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/05/2008 09:16:27
|
eduveks
GUJ Ranger
![[Avatar]](/images/avatar/bce9abf229ffd7e570818476ee5d7dde.png)
Membro desde: 19/04/2005 07:45:40
Mensagens: 831
Localização: Lisboa - Portugal
Offline
|
ou fazer tipo um flush()... sei lá, se a API não suporta fica mais dificil, mas ela deve suportar, se não é pegar no código e fazer umas alteraçãozinhoas
|
http://www.cajuscript.org
http://eduveks.blogspot.com |
|
|
 |
|
|