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.
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
Curtidas 0
Respostas
Thomaz_prg
05/12/2005
Após finalizar cada processamento, utilize Application.ProcessMessages:
Tipo
uses Forms;
//
for i:=0 to TotalDoLaco do begin
{Seus Comandos}
Application.ProcessMessages;
end;
Tipo
uses Forms;
//
for i:=0 to TotalDoLaco do begin
{Seus Comandos}
Application.ProcessMessages;
end;
GOSTEI 0
Imoreira
05/12/2005
Caro thomaz_prg, é exatamente assim que estou utilizando mas esse procedimento não libera a memória.
GOSTEI 0
Thomaz_prg
05/12/2005
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??
E que tipo de processamento é... envolve banco de dados?? Ou é processamento de arquivos e/ou imagens??
GOSTEI 0
Imoreira
05/12/2005
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.
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.
GOSTEI 0
Ipc$
05/12/2005
Utilizo AllocMem p/ alocar memória inicial, ReallocMem p/ aumentar a memória inicial alocada e FreeMem p/ liberar. Os tres funcionam sem problemas.
GOSTEI 0
Massuda
05/12/2005
...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.
GOSTEI 0
Imoreira
05/12/2005
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.
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.
GOSTEI 0