Boa tarde!
Galera,
Desenvolvi um aplicativo usando JPA que processa vários arquivos texto
e jogam o conteúdo no banco. O problema é que ele perde desempenho com o tempo.
Explico: no início ele demora uns 1 ou 2 segundos para processar cada arquivo,
e nos últimos arquivos ( um total de 200 mb ) demora quase 10 segundos.
Percebi que no taskmanager do windows a memória consumida do programa (java.exe)
começa em 30mb e pula para 80mb no final do processamento. Tentei dar um System.gc()
mas não resolveu.
Acredito que o programa fique lerdo devido a quantidade de strings que ele
manipula (tem que ler linha a linha do arquivo e quebrar em várias partes).
Alguém ai tem uma solução, ou já passou por problema semelhante?
Kara, eu ja passei por uma situação que acho q vai te ajudar…
Nas Questoes da maratona de programação os problemas sao testados com arquivos de texto e muitas vezes um código que tinha cin , 1 if e um else e cout apresentava TLE(tempo limite de execução) excedido… ai a gente desenvolveu um algoritmo que le os aquivos txt todos de uma vez… com fread… e armazena os bytes num buffer… e vai processando eses buffer… isso reduz drásticamente o tempo de execução do programa mas tarde eu t passo o algoritmo e voce ve acelera o seu processo…
Leo, valeu pela dica, mas acredito que não resolverá o meu problema, pois
já estou utilizando a classe BufferedReader. Eu marquei o tempo que o algoritmo
está demorando para carregar o arquivo ( eu carrego ele primeiro em uma List ),
e está demorando no máximo 100msec, que é menos de 2% do tempo total de processamento
de cada arquivo.
O problema deve ser com o pool de strings. Mas valeu pela ajuda.