DESCARREGAR MEMORIA-URGENTE

RICART 26/11/2009 09:58:01
#328591
Colegas,
Criei um aplicativo para executar dataminning em um bco oracle e copiara o resultado para um access.
Ele carrega os dados em conjuntos de registros, em média 70.000. Carrega os dados em um datagrid e depois copia 1 a 1 para o banco.

Observei que começa a ficar mais lento após a 3a consulta, pois fiz um loop para executar em intervalos de tempos que totalizarão próximo de 78 vezes.

Bom, gostaria de saber se tem como liberar memória sempre que executar uma interação do loop, pois acredito que deve estar havendo algum acúmulo de alocação.
MARCOSLING 26/11/2009 12:53:27
#328611
Por acaso vc chegou a monitorar?
RCMRO 27/11/2009 08:14:54
#328657
Experimenta trocar o DATAGRID por um ADO RECORDSET e, a cada final de carga do ORACLE e descarga no ACCESS, você fecha o RECORSET e [Ô]desistancia[Ô] o mesmo

Private Sub Processo
Dim rs as new adodc.recorset

... cria a lógica de leitura e gravação

rs.close
set rs=nothing
end sub

Com uma ou com outra solução, o VB e o Windows precisarão liberar memória de tempos em tempos mas, como vc [Ô]desistancia[Ô] ele sempre, entre uma operação e outra, o VB/Windows podem ir trabalhando na reorganização da memória.

Porém, mesmo que o [Ô]garbage colector[Ô] do VB/Windows rode entre os acessos, se perceber ainda uma grande demora, tente mudar o range de registros lidos em cada acesso... Às vezes fica MUITO MAIS RÁPIDO, apesar de acessar mais vezes.
Tópico encerrado , respostas não são mais permitidas