[firebase-br] Consumo de memória muito Alto (Não libera)
Wesley Oliveira
wesley em rgsystem.com.br
Qua Dez 4 14:52:50 -03 2013
Olá pessoal!
Correndo o risco de parecer bobo, mas uma questão está me perturbando essa
semana:
Nosso sistema é baseado num Servidor DataSnap com Firebird 2.5 SuperServer.
Ao gerar os boletins dos alunos de uma turma, por exemplo, o sistema dispara
várias funções entre servidor/banco de dados. Algumas stored procedures são
executadas, tabelas temporárias são alimentadas e consultadas pra depois
serem esvaziadas e por aí vai. Tudo comandado pelo servidor da aplicação.
Ao iniciar o processo, o FB está consumindo 22MB de memória e, para uma
turma de 30 alunos por exemplo, ao final da execução, o consumo está
beirando os 250MB!
Sim, são rotinas pesadas, vários registros pra cada aluno em diversas
tabelas, SUMS, COUNTS, tem de tudo nessa rotina...
Aí eu penso: Quando acabar, toda essa memória será liberada, certo?
Errado... só libera quando encerra o servidor do sistema.... E nesse fim de
ano, alguns clientes estão gerando os boletins de TODAS as turmas várias
vezes por dia... Imagina o tanto que isso tá consumindo dos pobres
servidores, certo?
Então eu pergunto: Por que isso acontece?
Eu utilizo para as consultas ao BD o TDBXCommand com TDBXReader do Delphi e,
sempre que um command ou um reader é criado, é destruído ao final da
“participação” dele na rotina. Já dei Free, FreeAndNil e nada libera a
memória...
Alguma boa alma poderia me dar alguma dica?
Wesley Oliveira
Programador de Sistemas de Informação
RG System Informática
Fone: +55 (27) 3727-1127
Celular: +55 (27) 99606-0038
Mais detalhes sobre a lista de discussão lista