Ir para conteúdo
  • Cadastre-se

dev botao

ACBR x Alocação de memória


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

Recommended Posts

  • Fundadores

o HeapTrace é a melhor maneira de sabermos se realmente ocorre o vazamento de memória...

Provavelmente é algo na maneira que o RuWindows aloca/desaloca a memória... Eu creio que o consumo de memória deva estabilizar, após algum tempo de uso...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores

NOTA: ainda estava escrevendo enquanto você e o Daniel postaram... Estou postando apenas para referência futura...

 

37 minutos atrás, Dércio Luis Zanatta disse:

1 - Alterei o arquivo FastMM4Options.INC as seguintes linhas:

{.$define FullDebugMode}  para {$define FullDebugMode}

e

{.$define ClearLogFileOnStartup} para {$define ClearLogFileOnStartup}

Me parece certo.

37 minutos atrás, Dércio Luis Zanatta disse:

setei as variáveis antes do Application.Initialize;

  FullDebugModeScanMemoryPoolBeforeEveryOperation := True;
  SuppressMessageBoxes:=False;

Não precisa dessas linhas. A primeira é apenas quando você procura erros de consistência na memória. A segunda para o FastMM não mostrar nenhuma mensagem durante a execução. Então remova essas linhas.

Você precisa da "ReportMemoryLeaksOnShutdown := True;" se quiser que uma mensagem apareça no final.

37 minutos atrás, Dércio Luis Zanatta disse:

Rodo a aplicação em modo Debug !!

Nas opções do projeto, na aba "Compiler option", tenha certeza que as seguintes opções estão marcadas:

  • Debug Information
  • Local Symbols
  • Reference Info ou  (Symbol reference info) 

Nas opções do projeto, na aba "linker" uma das duas opções ajudam... Mas geralmente eu não mexo aqui...

  • TD32 Debug info
  • Map file

Depois de marcá-las você fez um build no projeto.

Se isso tudo estiver certo, mas mesmo assim nenhuma mensagem ou arquivo esteja sendo criado, então é porque não está havendo vazamento de memória.

 

 

Editado por EMBarbosa
Veja nota

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
3 minutos atrás, Daniel Simoes disse:

o HeapTrace é a melhor maneira de sabermos se realmente ocorre o vazamento de memória...

Provavelmente é algo na maneira que o RuWindows aloca/desaloca a memória... Eu creio que o consumo de memória deva estabilizar, após algum tempo de uso...

Certo Daniel.

Vou encaminhar uma atualização para um cliente meu que é supermercado, onde são registrados vários ítens por NFCe. Ai vou acompanhar para ver se chega a dar o "out of memory" ainda e qual a quantidade de memória que fica alocada depois de um bom tempo de uso.

Muito obrigado a todos pela ajuda ai..  Vcs são demaaaais...

Abraço..

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

 

21 minutos atrás, Dércio Luis Zanatta disse:

Vou encaminhar uma atualização para um cliente meu que é supermercado, onde são registrados vários ítens por NFCe.

Tem um detalhe, visto que usa o Delphi 7, após incluir o FastMM no seu projeto, mesmo compilando em modo release, você pode ter corrigido o problema ou pelo menos reduzido a expressividade dele. Digo isso pois já passei por esse problema com o Delphi 7.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
1 minuto atrás, EMBarbosa disse:

 

Tem um detalhe, visto que usa o Delphi 7, após incluir o FastMM no seu projeto você pode ter corrigido o problema ou pelo menos reduzido a expressividade dele. Digo isso pois já passei por esse problema com o Delphi 7.

Posso deixar ele incluso no meu projeto ?  Não vai dar diferença de velocidade ou desempenho executando a aplicação no cliente ?

Preciso enviar o arquivo .INC para o cliente tb ou basta compilar com o FASTMM4 no uses ?

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
2 minutos atrás, Dércio Luis Zanatta disse:

Posso deixar ele incluso no meu projeto ?  

Deve.

2 minutos atrás, Dércio Luis Zanatta disse:

Não vai dar diferença de velocidade ou desempenho executando a aplicação no cliente ?

Provavelmente ele ficará mais rápido, visto que o gerenciador de memória do Delphi 7 é muito falho. Apenas se certifique de gerar no modo Release.

3 minutos atrás, Dércio Luis Zanatta disse:

Preciso enviar o arquivo .INC para o cliente tb ou basta compilar com o FASTMM4 no uses ?

Só compilar. Mas lembre-se de desligar: FullDebugMode e o ReportLeaksOnShutDown. Acho que não vai querer essas mensagens aparecendo no cliente.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
13 minutos atrás, EMBarbosa disse:

Deve.

Provavelmente ele ficará mais rápido, visto que o gerenciador de memória do Delphi 7 é muito falho. Apenas se certifique de gerar no modo Release.

Só compilar. Mas lembre-se de desligar: FullDebugMode e o ReportLeaksOnShutDown. Acho que não vai querer essas mensagens aparecendo no cliente.

Certo..

Desculpe minha ignorância, mas o que seria modo Release ?  Hoje eu compilo o projeto e envio o executável para o cliente, não sei seria isso o modo Release ?

Quando vc diz "desligar: FullDebugMode e o ReportLeaksOnShutDown  Vc quer dizer colocar um . na frente ?? ({.$define FullDebugMode}

Não econtrei o define para ReportLeaksOnShutDown no arquivo .INC encontrei apenas esses texto:

  {Set this option to enable manual control of the memory leak report. When
   this option is set the ReportMemoryLeaksOnShutdown variable (default = false)
   may be changed to select whether leak reporting should be done or not. When
   this option is selected then both the variable must be set to true and the
   other leak checking options must be applicable for the leak checking to be
   done.}
  {.$define ManualLeakReportingControl}

Pelo que entendi, dessa forma já estaria "desligado"  certo ?


 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
12 minutos atrás, Dércio Luis Zanatta disse:

Desculpe minha ignorância, mas o que seria modo Release ?  Hoje eu compilo o projeto e envio o executável para o cliente, não sei seria isso o modo Release ?

Release é compilar sem os dados de debug, como expliquei no post anterior.

11 minutos atrás, Dércio Luis Zanatta disse:

Quando vc diz "desligar: FullDebugMode e o ReportLeaksOnShutDown  Vc quer dizer colocar um . na frente ?? ({.$define FullDebugMode}

Para desligar o FullDebug mode é isso mesmo. Adicione o "." na frente do $define.

8 minutos atrás, Dércio Luis Zanatta disse:

Não econtrei o define para ReportLeaksOnShutDown

Me confundi na hora de escrever. Na verdade é ReportMemoryLeaksOnShutdown. Mas é uma variável definida no FastMM4.pas e não no arquivo INC. E você adiciona no código como no post que escrevi anteriormente. Atribua o valor False a ela pra que não se exiba uma mensagem.

9 minutos atrás, Dércio Luis Zanatta disse:

Pelo que entendi, dessa forma já estaria "desligado"  certo ?

Não isso é outra coisa... não precisa mexer nesta opção.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
Em 28/10/2016 at 18:16, EMBarbosa disse:

Release é compilar sem os dados de debug, como expliquei no post anterior.

Para desligar o FullDebug mode é isso mesmo. Adicione o "." na frente do $define.

Me confundi na hora de escrever. Na verdade é ReportMemoryLeaksOnShutdown. Mas é uma variável definida no FastMM4.pas e não no arquivo INC. E você adiciona no código como no post que escrevi anteriormente. Atribua o valor False a ela pra que não se exiba uma mensagem.

Não isso é outra coisa... não precisa mexer nesta opção.

Bom dia.

Fiz alguns testes aqui com o FastMM4.pas incluso no meu projeto e os resultados foram maravilhosos. Acredito que vai resolver meu problema definitivamente.

Só fiquei na dúvida se é necessário jogar aquelas DLLs do FastM na máquina do cliente. Acredito que não, mas só para confirmar mesmo.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
4 horas atrás, Dércio Luis Zanatta disse:

Só fiquei na dúvida se é necessário jogar aquelas DLLs do FastM na máquina do cliente. Acredito que não, mas só para confirmar mesmo.

A DLL do FastMM só é necessária quando executado em FullDebugMode. Como o nome diz, é para Debug, então de modo geral você não a leva para o cliente.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
39 minutos atrás, EMBarbosa disse:

A DLL do FastMM só é necessária quando executado em FullDebugMode. Como o nome diz, é para Debug, então de modo geral você não a leva para o cliente.

Bahh EMBarbosa. 

Tu não tens idéia do galho que me quebrou cara...

Muito obrigado pela paciência em me ajudar. Espero retribuir isso em alguma outra oportunidade.

Abraço..

 

Link para o comentário
Compartilhar em outros sites

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

Espero retribuir isso em alguma outra oportunidade.

Continue assinando o SAC. Já é de grande ajuda ao projeto. :-D

  • Curtir 1

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Em 28/10/2016 at 17:07, Daniel Simoes disse:

o HeapTrace é a melhor maneira de sabermos se realmente ocorre o vazamento de memória...

Provavelmente é algo na maneira que o RuWindows aloca/desaloca a memória... Eu creio que o consumo de memória deva estabilizar, após algum tempo de uso...

Daniel, desculpe esse HeapTrace é algo que vem no Lazarus ou quem usa Delphi também pode se beneficiar ?

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, Daniel Simoes disse:

Por favor leia o tópico tódo... onde o Elton explica sobre o uso do FastMM

Entendido, é uma diretiva do Lazarus, é que  no google aparece menção a " HeapTrace [16/32] - HeapTrace, written by Juanco Añez, is a shareware heap debugger for Delphi 1.x and 2.x applications that enables debugging of heap memory use. "  como era algo antigo poderia ser algo que foi aberto e usado no Lazarus. Mas entendido o Elton explicou 100% sobre FASTMM, obrigado.

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Membros Pro

embarbosa.

A solução de usar o FASTMM4 em minha aplicação acabou definitivamente com os problemas de memória que eu vinha enfrentando, porém notei que depois que passei a usa-lo, estão ocorrendo diversas ocorrências de falhas de comunicação com o WS da SEFAZ ..

Apenas para fazer um teste para ter certeza que é esse o problema, gostaria de saber se tem uma maneira de "desativar" o FastMM4 antes de enviar a NFCe e "ativar" novamente depois de receber o retorno.

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
23 horas atrás, Antonio Carlos L disse:

Creio que não. Mas não creio que tenha relação. Isso ocorre em todos os clientes ou apenas em algum ?

Ocorre em todos.

Fiquei desconfiado depois que debugei o programa em busca de onde ocorria problema e notei que o processamento foi desficado para o FastMM4.pas alguma vezes.

Tem lógica ser isso, pois depois que inclui o FastMM4 em meu sistema as ocororrências de NFCe entrando em contingência por falta de comunicação se tornaram constantes, enquanto antes eram muuuuuitooo raras.

Por isso queria ver se existe alguma maneira de "desativar" o FastMM4 e ativar novamente, só para tirar a dúvida mesmo.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
Em 18/11/2016 at 15:39, Dércio Luis Zanatta disse:

Apenas para fazer um teste para ter certeza que é esse o problema, gostaria de saber se tem uma maneira de "desativar" o FastMM4 antes de enviar a NFCe e "ativar" novamente depois de receber o retorno.

Nunca precisei nem quis correr o risco de usar isso. Pode ser que tenha, mas acredito que provavelmente é complicado de implementar.

Você pode tentar outros gerenciadores de memória. Ou desabilitar o FastMM completamente.

18 horas atrás, Dércio Luis Zanatta disse:

Tem lógica ser isso, pois depois que inclui o FastMM4 em meu sistema as ocororrências de NFCe entrando em contingência por falta de comunicação se tornaram constantes, enquanto antes eram muuuuuitooo raras.

Por isso queria ver se existe alguma maneira de "desativar" o FastMM4 e ativar novamente, só para tirar a dúvida mesmo.

Dificilmente é realmente um problema no FastMM. Mais fácil ser por causa de um problema que antes não era visível.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
40 minutos atrás, EMBarbosa disse:

Nunca precisei nem quis correr o risco de usar isso. Pode ser que tenha, mas acredito que provavelmente é complicado de implementar.

Você pode tentar outros gerenciadores de memória. Ou desabilitar o FastMM completamente.

Dificilmente é realmente um problema no FastMM. Mais fácil ser por causa de um problema que antes não era visível.

Pior que é Elton.

Nos clientes que tenho uma versão anterior a de ter implementado o FastMM4 não entra nenhuma NFCe em Contingênica. É só colocar essa versão compilada com FASTMM4 que ocorrem várias durante o dia.

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Eu entendo. Mas você entende que isso pode ser algum problema que era mascarado pelos problemas de memórias que você tinha e que agora ficou visível por ter resolvido os problemas anteriores?

De qualquer forma, a menos que exista um passo a passo para reproduzir, as sugestões neste caso foram as que eu mencionei antes.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
8 minutos atrás, EMBarbosa disse:

Eu entendo. Mas você entende que isso pode ser algum problema que era mascarado pelos problemas de memórias que você tinha e que agora ficou visível por ter resolvido os problemas anteriores?

De qualquer forma, a menos que exista um passo a passo para reproduzir, as sugestões neste caso foram as que eu mencionei antes.

Sim claro.. Entendo... 

Só me ocorreu de perguntar se existe alguma forma de habiliar/Desabilitar o uso durante o programa. Se isso não existe, infelizmente os clientes vão ter que conviver com algumas NFCes entrando em contingência, pois os problemas que ocorrem sem usar o Fastm são muito maiores..

Se tivesse uma forma de Desativar o Fastm antes de realizar o envio e ativar novamente depois, ficaria perfeito..

No Delphi 2010 existe esse problema de alocação de memória também ?  Se eu migrar para 2010, precisaria linkar o FastMM4.pas também ?

 

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

  • Membros Pro
10 horas atrás, Antonio Carlos L disse:

Bom o fastmm se lembro tem uma configuração default , será que algo foi mudado ou foi habilitado ? 

1 - Alterei o arquivo FastMM4Options.INC as seguintes linhas:

{.$define FullDebugMode}  para {$define FullDebugMode}

e

{.$define ClearLogFileOnStartup} para {$define ClearLogFileOnStartup}

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
19 horas atrás, Dércio Luis Zanatta disse:

No Delphi 2010 existe esse problema de alocação de memória também ?  Se eu migrar para 2010, precisaria linkar o FastMM4.pas também ?

O FastMM foi incorporado no Delphi 2007 se não me engano. Mas a versão disponível na internet do FastMM, pelo menos em teoria, possui correções e melhorias. Ou seja, é uma decisão pessoal.

Acho que esse tópico já está saindo do assunto... Se ainda tem outras dúvidas, talvez fosse melhor você começar um novo tópico com essas dúvidas específicas. Não se preocupe, vamos tentar responder na medida do possível.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2706 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.

The popup will be closed in 10 segundos...