05/12/2005

Liberar memória dentro de um laço

Amigos

Estou precisando fazer um grande processamento dentro de um laço
for e estou verificando que há um grande consumo de memória. Já tentei utilizar a função getMem() mas não obtive melhoras.
alguém conhece outra maneira de liberar a memória utilizada?

Grato.


Imoreira

Respostas

05/12/2005

Thomaz_prg

Após finalizar cada processamento, utilize Application.ProcessMessages:

Tipo

uses Forms;

//

for i:=0 to TotalDoLaco do begin

{Seus Comandos}

Application.ProcessMessages;

end;


Responder Citar

05/12/2005

Imoreira

Caro thomaz_prg, é exatamente assim que estou utilizando mas esse procedimento não libera a memória.


Responder Citar

05/12/2005

Thomaz_prg

Mas você não pode usar o GetMem... pois o getmem pega mais memória... ele reserva mais memória e não libera...

E que tipo de processamento é... envolve banco de dados?? Ou é processamento de arquivos e/ou imagens??


Responder Citar

05/12/2005

Imoreira

Não me expressei direito.
Estou utilizando o getmem() para reservar memória e freemem() para liberá-la.

Não utilizo banco de dados nem imagens.

É um sistema para desdobramentos de números de loteria. Utilizo o for para gerar os números.


Responder Citar

05/12/2005

Ipc$

Utilizo AllocMem p/ alocar memória inicial, ReallocMem p/ aumentar a memória inicial alocada e FreeMem p/ liberar. Os tres funcionam sem problemas.


Responder Citar

05/12/2005

Massuda

...estou verificando que há um grande consumo de memória.
Como você está medindo isso? Usando o gerenciador de tarefas? Se for seu caso, saiba que o gerenciador de tarefas mostra um valor maior (às vezes muito maior) do que o real.

Se você está liberando toda a memória que você alocou com GetMem usando FreeMem, não tem motivo para se preocupar.


Responder Citar

05/12/2005

Imoreira

Caro Massuda

Sim, estou utilizando o gerenciador de tarefas do Windows e tenho verificado que a memória física disponível está caindo rapidamente
e tenho verificado que o processamento está ficando muito lento.


Responder Citar