Antonio Carlos L Postado 24 Abril Compartilhar Postado 24 Abril Revision 33422. Estava dando o seguinte memoryleak ao efetuar consulta MDFe. Achei a classe TProcInfraSA na unit ACBrMDFeWebServices A classe é criada no metodo TMDFeConsulta.Clear e esta sendo destruída no destrutor; Adicionei essa verificação antes de criar if Assigned(FprocInfraSA) then FprocInfraSA.Free; FprocInfraSA := TProcInfraSA.Create; e o leak desapareceu. Para vossas considerações. Link para o comentário Compartilhar em outros sites More sharing options...
Moderadores Juliomar Marchetti Postado 25 Abril Moderadores Compartilhar Postado 25 Abril No caso o correto seria destruir ao fim do uso ? e não ao criar ele ? fontes estão 100% atualizados todos pois tenho validação de vazamento e uso o MDFe e não ocorre usando o sistema Juliomar Marchetti skype: juliomar telegram: juliomar e-mail: [email protected] http://www.juliomarmarchetti.com.br Link para o comentário Compartilhar em outros sites More sharing options...
Solution Antonio Carlos L Postado 25 Abril Autor Solution Compartilhar Postado 25 Abril OI Juliomar. Levando em consideração sua resposta, olhei a chamada da consulta e esta identica ao exemplo do MDFe em procedure TfrmACBrMDFe.btnConsultarClick(Sender: TObject); Veja no código da Revision 33422 na unit ACBrMDFeWebServices . Existe outras duas variaveis FprotMDFe e FprocEventoMDFe, coloquei o bloco de código abaixo, que também são destruídas se existirem antes de serem criadas. Segui apenas a mesma logica em relação a FprocInfraSA. O fato é que se eu remover essa linha e fizer varias consultas acontecem vários MemoryLeak e acrescentando essa linha não ocorre. procedure TMDFeConsulta.Clear; begin inherited Clear; .... if Assigned(FPConfiguracoesMDFe) then begin FtpAmb := FPConfiguracoesMDFe.WebServices.Ambiente; FcUF := FPConfiguracoesMDFe.WebServices.UFCodigo; end; if Assigned(FprotMDFe) then FprotMDFe.Free; if Assigned(FprocEventoMDFe) then FprocEventoMDFe.Free; if Assigned(FprocInfraSA) then FprocInfraSA.Free; <<< adicionado FprotMDFe := TProcMDFe.Create; FprocEventoMDFe := TRetEventoMDFeCollection.Create; FprocInfraSA := TProcInfraSA.Create; end; Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Italo Giurizzato Junior Postado 25 Abril Consultores Compartilhar Postado 25 Abril Bom dia Antonio, Muito obrigado pela colaboração, já inclui na minha lista de tarefas para analise. TK-5379 1 Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Araraquara - A era dos Trólebus Link para o comentário Compartilhar em outros sites More sharing options...
Antonio Carlos L Postado 25 Abril Autor Compartilhar Postado 25 Abril Obrigado @Italo Giurizzato Junior pela atenção. Link para o comentário Compartilhar em outros sites More sharing options...
Consultores Italo Giurizzato Junior Postado 26 Abril Consultores Compartilhar Postado 26 Abril Bom dia Antonio, Já esta no SVN. Italo Giurizzato Junior Ajude o Projeto ACBr crescer - Assine o SAC Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP Araraquara - A era dos Trólebus Link para o comentário Compartilhar em outros sites More sharing options...
Recommended Posts
Crie uma conta ou entre para comentar
Você precisar ser um membro para fazer um comentário
Criar uma conta
Crie uma nova conta em nossa comunidade. É fácil!
Crie uma nova contaEntrar
Já tem uma conta? Faça o login.
Entrar Agora