Page 1 of 1

TXml não libera memoria

Posted: Thu Aug 16, 2018 2:00 pm
by Marcelo Coelho Silva
Prezados Amigos,

Estou utilizando a Classe TXml para Processar informações de Milhares de XML da forma abaixo:

Local oXml, cFileXml

.....

Do While .....

.......

oXml := TXmlDocument():New()
oXml:Read( MemoRead( cFileXml ))

......

EndDo


O problema é que com o uso do método "NEW " a cada interação do LOOP (doWhile/EndDo) mais memoria vai sendo alocada até o limite do Windows (a Aplicação da erro por falha na alocação de memoria). Caso o "NEW" seja colocado fora do "LOOP" o método "READ" acumula as leituras dos XML (cFileXml) uma sobre a outra, alocando a mesma quantidade de memoria, assim provocando o mesmo erro do Windows.

Alguém saberia um "método" que apagasse o conteúdo de oXml antes do uso do "READ" (para que não acumulasse mais memoria) ou um "método" que liberasse a memoria apos o uso do object oXml (liberando a memoria utilizada por ele) ?

Desde já agradeço a quem puder ajudar.

Re: TXml não libera memoria

Posted: Thu Aug 16, 2018 8:18 pm
by Marcelo Coelho Silva
Me reapoderam e outro Fórum:

Utilizar a Função hb_gcAll() // Chamada ao Garbage Collector -> limpa "lixo" da memória