Ir para conteúdo
  • Cadastre-se

dev botao

Consumo De Memória Ao Enviar Nfce


Caetano
  • Este tópico foi criado há 2475 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia pessoal;

Estava realizando alguns testes de uso de memória.

Quando envia uma nfce ela aumenta o consumo de memória, porém ao terminar o envio não libera, fica aumentando a cada envio.

Pesquisando no fórum não achei relatos, isso acontece com algum de vocês também?

 

Agradeço

Atenciosamente

Caetano

'Juntos podemos mais'

Link para o comentário
Compartilhar em outros sites

Boa tarde Régis.

Testei agora a tarde com o exemplo, ocorre o mesmo problema, não esta liberando a memória depois do envio.

Quando inicio o Exemplo ele fica com uso em torno de 2.100k, logo após enviar a primeira nfce ele já pula para 12k e depois sobe a cada envio ou até mesmo quando outro método for executado, sem liberar em nenhum momento.

Resumindo, para clientes que ficam com o sistema o dia inteiro aberto emitindo nfce, imagina no final do dia. Pelo que percebo algo esta ficando prezo na memória.

 

Seria bom, todos verificarem em seus sistemas.

Agradeço plea antenção

Atenciosamente

Caetano

'Juntos podemos mais'

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Moderadores

Tentem colocar no DPR do Demo:

 

ReportMemoryLeaksOnShutDown := True;

 

E façam testes de envio....

 

depois ao fechar o DEMO será apresentado os Leaks que poderão estar consumindo a memoria durante a execução.

 

[]´s

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

Link para o comentário
Compartilhar em outros sites

Bom dia.
Segue o retorno, a cada nfce emitida aumenta o consumo, este eu fiz com emissão de 6 notas e já estava em 40.000 K.
 
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
 
 
 
1 - 12 bytes: TIniFile x 1
 
29 - 36 bytes: UnicodeString x 1
 
45 - 52 bytes: UnicodeString x 2
 
53 - 60 bytes: UnicodeString x 1
 
85 - 92 bytes: TStringList x 1
 
101 - 108 bytes: UnicodeString x 1
 
117 - 124 bytes: UnicodeString x 1, Unknown x 1
 
 
---------------------------
OK   
---------------------------.
 
Agradeço

Atenciosamente

Caetano

'Juntos podemos mais'

Link para o comentário
Compartilhar em outros sites

  • 9 meses depois ...

Comigo acontece a mesma coisa, e não adianta eu tentar destruir o componente e criar de novo, pois a memória continua alocada e não baixa! Principalmente quando é em uma NF-e com muitos produtos, o método que consome mais memória é o "ACBrNFe.NotasFiscais.Valida", ele aloca muita memória e não volta, mesmo eu destruindo o componente do ACBr. Alguém está passando pelo mesmo? Tem alguma solução para isto? Utilizo o Delphi XE3.

Link para o comentário
Compartilhar em outros sites

  • 7 meses depois ...
  • Moderadores
32 minutos atrás, Cezar disse:

Esse problema foi resolvido?

Qual seria o problema? sua aplicação está dando vazamento de memória?

veja que parou na metade do ano passado e não foi reportado mais nada!

caso queira habilitar o memory leak e descobrir se tem algo por favor fique a vontade!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois ...
Em 15/02/2016 at 12:06, Juliomar Marchetti disse:

Achei que estivesse com problema de vazamento de memória!

Bom dia 

estava realizando teste agora estou com a revisão 12039 e apresentou o problema de aumento de memoria. segue como realizei o teste 

abri o demo do acbr olhei a memoria estava em 3.720 K logo apos cliquei no botao Gerar NFe a memoria foi para 8.076 depois cliquei no botao validar xml a memoria foi para 16.556.  e a cada geração ele so vai aumentando. acrescentei um botão no demo so pra dar um Free e mesmo assim a memoria não abaixou alguem mais notou esse comportamento e conseguiu resolver. sei que o topico é antigo mas pelo visto esse problema permanece.

escrevi o ocorrido pois nao conseguiu colar a imagem

Link para o comentário
Compartilhar em outros sites

  • Moderadores
1 minuto atrás, leandroaoa disse:

ninguem mais realizou esses teste e percebeu o aumento de memoria ?

Bom dia!

em 20 horas meio difícil alguém passar e lhe dar a resposta esperada!

mas não tive o problema está a relatar acima!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Juliomar Marchetti disse:

Bom dia!

em 20 horas meio difícil alguém passar e lhe dar a resposta esperada!

mas não tive o problema está a relatar acima!

desculpe mas não quis tumultuar o forum so queria saber se alguem realizou o teste. 

consegui colar as imagens na imagem 1 eu so abri o demo veja a memoria como esta. Na imagem 2 eu cliquei no botao gerar NFe veja pra onde foi a memoria.

Sem título.png

Sem título 2.png

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
  • 8 meses depois ...

Pessoal, bom dia!

Estou usando uma procedure no meu agente de autorização da notas chamada TrimAppMemorySize, não sei se é a forma com que eu implementei o agente mas a memória estava sempre aumentando progressivamente conforme alguns relatos, chegando a travar a aplicação. Agora após cada 'rodada' de processamento eu chamo ela e o exe de 20 mb de memória baixa para 0,5 mb.

Citar

 

procedure TFrmPrincipal.TrimAppMemorySize;
var
  MainHandle : THandle;
  cIDProcess : Cardinal;
  fw,pid:dword;
begin
  fw:=findwindow(nil,PWideChar(FrmPrincipal.Caption)); //Nome do processo 

  if fw = 0 then
    cIDProcess  := 0
  else
  begin
      getwindowthreadprocessid(fw,@pid);
    cIDProcess  := pid;
  end;

  try
    MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, cIDProcess) ;
    SetProcessWorkingSetSize(MainHandle, $FFFFFFFF, $FFFFFFFF) ;
    CloseHandle(MainHandle) ;
  except
  end;

  Application.ProcessMessages;
end;

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
3 horas atrás, mbbortolini disse:

Pessoal, bom dia!

Estou usando uma procedure no meu agente de autorização da notas chamada TrimAppMemorySize, não sei se é a forma com que eu implementei o agente mas a memória estava sempre aumentando progressivamente conforme alguns relatos, chegando a travar a aplicação. Agora após cada 'rodada' de processamento eu chamo ela e o exe de 20 mb de memória baixa para 0,5 mb.

 

Bom dia

Tive diversos problemas com relação a esse problema no final do ano passado.

Depois de muito pesquisar, passei a usar o TrimAppMemoySize que ajudou bastante, porém não resolveu 100% o problema. No meu caso uso Delphi 7. Passei a usar o Fastm4 que resolveu de uma vez por todas isso..

Da uma pesquisada sobre como utilizar esse FastM4, aqui no fórum tem um tópico sobre isso..

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Boa tarde.

Essa função que o @mbbortolini citou é de fato milagrosa. Já tinha conhecimento da mesma e inclusive a utilizamos em nosso sistema.

Porém, não se deixem enganar! Se existe um crescimento do uso de memória pela aplicação, procurem verificar por vazamentos de memória (Memmory Leaks). Para isso, a dica do colega @Dércio Luis Zanatta cai como uma luva. Atualmente utilizamos esse pacote (FastMM4) para reportar os vazamentos de memória que a aplicação teve ao decorrer de sua execução.

Ao meu ver, o fato de que o consumo de memória do aplicativo aumenta após realizar determinada chamada é normal, pois o S.O aloca novos blocos de memória para a criação de objetos. O que não vem a ser normal é um crescimento constante dessa utilização de memória mesmo após a liberação dos objetos criados.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
Em ‎16‎/‎06‎/‎2017 at 16:10, felipetomm disse:

Boa tarde.

Essa função que o @mbbortolini citou é de fato milagrosa. Já tinha conhecimento da mesma e inclusive a utilizamos em nosso sistema.

Porém, não se deixem enganar! Se existe um crescimento do uso de memória pela aplicação, procurem verificar por vazamentos de memória (Memmory Leaks). Para isso, a dica do colega @Dércio Luis Zanatta cai como uma luva. Atualmente utilizamos esse pacote (FastMM4) para reportar os vazamentos de memória que a aplicação teve ao decorrer de sua execução.

Ao meu ver, o fato de que o consumo de memória do aplicativo aumenta após realizar determinada chamada é normal, pois o S.O aloca novos blocos de memória para a criação de objetos. O que não vem a ser normal é um crescimento constante dessa utilização de memória mesmo após a liberação dos objetos criados.

Bom dia

Só para complementar. O uso do FastMM4 não serve apenas para localizar possíveis vazamentos de memória. Na minha opinião o uso do FastMM4 otimiza em muito o gerenciamento de memória que não é muito satisfatório por parte do Delphi. No meu caso, por exemplo, não existia nenhum vazamento de memória, porém o crescimento da memória conforme o uso do aplicativo crescia sem parar. O simples fato de compilar o FastMM4 junto na minha aplicação ( com algumas configurações que não lembro agora)  tornaram a otimização de memória muito mais eficaz.

Editado por Dércio Luis Zanatta
  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Moderadores
18 minutos atrás, Dércio Luis Zanatta disse:

Só para complementar. O uso do FastMM4 não serve apenas para localizar possíveis vazamentos de memória. Na minha opinião o uso do FastMM4 otimiza em muito o gerenciamento de memória que não é muito satisfatório por parte do Delphi. No meu caso, por exemplo, não existia nenhum vazamento de memória, porém o crescimento da memória conforme o uso do aplicativo crescia sem parar. O simples fato de compilar o FastMM4 junto na minha aplicação ( com algumas configurações que não lembro agora)  tornaram a otimização de memória muito mais eficaz.

Qual versão do Delphi está usando?

O FastMM é integrado ao Delphi desde o Delphi 2006.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
Agora, BigWings disse:

Qual versão do Delphi está usando?

O FastMM é integrado ao Delphi desde o Delphi 2006.

No meu caso, fez muita diferença pelo fato de eu usar Delphi 7, mas recomento o uso do FastMM4 nas versões mais atuais do Delphi tb. Na prática parece funcionar melhor !

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
6 horas atrás, Dangelo Porto disse:

Ainda não consegui fazer esse FastMM4 funcionar, não entendi direito o que ele faz, pois no demo tem um monte de coisas que não sei por onde começar

Boa tarde ..

Não sei como colocar um link de um post aqui, mas procura por ACBR X ALOCÃÇÃO DE MEMÓRIA. La vai ter toda a discussão que me levou a usar o FastMM4

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2475 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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 conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.