out of memory - Delphi 10.3
08/12/2022
0
Em um dado momento, quando entro em um determinado formulário, o sistema emite a mensagem de erro "out of memory" e trava todo o sistema.
Pelo gerenciador de tarefas percebi que a memória do computador chega a quase 2GB.
Já procurei na internet soluções de criar e destruir formulários, mas aparentemente não está resolvendo.
Alguém pode me ajudar a solucionar este caso?
grato
Rones.
Rones
Post mais votado
08/12/2022
Em um dado momento, quando entro em um determinado formulário, o sistema emite a mensagem de erro "out of memory" e trava todo o sistema.
Pelo gerenciador de tarefas percebi que a memória do computador chega a quase 2GB.
Já procurei na internet soluções de criar e destruir formulários, mas aparentemente não está resolvendo.
Alguém pode me ajudar a solucionar este caso?
grato
Rones.
Isso é vazamento de memória no seu aplicativo.
Deve existir diversos locais onde você cria objetos manualmente e não destrói após o uso.
ReportMemoryLeaksOnShutdown := True;
Adicione essa linha no seu .DPR e vá abrindo uma tela por vez e feche o sistema em seguida, ele vai te mostrar quais objetos estão causando o problema.
Boa sorte!
Sim, obrigado.
em qual local do .DPR coloque este código? Como abrir uma tela por vez?
Desculpe, sou novato.
Rones.
Você vai colocar esse comando dentro do bloco Begin End como algo próximo ao código abaixo:
begin ReportMemoryLeaksOnShutdown := True; Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TfrmPrincipal, frmPrincipal); Application.Run; end.
E Quanto ao abri um form (tela) e fechar o sistema, é literalmente isso que você deve fazer.
Esse comando que lhe passei vai varrer seu código e mostrar os objetos que foram criados em tempo de execução e não foram destruídos.
Comece com o form principal do sistema, literalmente abra o sistema e feche em seguida. Se você abrir várias telas vai ficar mais difícil identificar onde estão os vazamentos, uma vez que o comando vai coletando as informações, mas não mostra de onde vem elas (por isso abrir uma tela por vez).
Deve aparecer um modal com as informações capturadas, e entre elas os objetos que precisam ser encerrados.
Claudio Andrade
Mais Posts
08/12/2022
Claudio Andrade
Em um dado momento, quando entro em um determinado formulário, o sistema emite a mensagem de erro "out of memory" e trava todo o sistema.
Pelo gerenciador de tarefas percebi que a memória do computador chega a quase 2GB.
Já procurei na internet soluções de criar e destruir formulários, mas aparentemente não está resolvendo.
Alguém pode me ajudar a solucionar este caso?
grato
Rones.
Isso é vazamento de memória no seu aplicativo.
Deve existir diversos locais onde você cria objetos manualmente e não destrói após o uso.
ReportMemoryLeaksOnShutdown := True;
Adicione essa linha no seu .DPR e vá abrindo uma tela por vez e feche o sistema em seguida, ele vai te mostrar quais objetos estão causando o problema.
Boa sorte!
08/12/2022
Rones
Em um dado momento, quando entro em um determinado formulário, o sistema emite a mensagem de erro "out of memory" e trava todo o sistema.
Pelo gerenciador de tarefas percebi que a memória do computador chega a quase 2GB.
Já procurei na internet soluções de criar e destruir formulários, mas aparentemente não está resolvendo.
Alguém pode me ajudar a solucionar este caso?
grato
Rones.
Isso é vazamento de memória no seu aplicativo.
Deve existir diversos locais onde você cria objetos manualmente e não destrói após o uso.
ReportMemoryLeaksOnShutdown := True;
Adicione essa linha no seu .DPR e vá abrindo uma tela por vez e feche o sistema em seguida, ele vai te mostrar quais objetos estão causando o problema.
Boa sorte!
Sim, obrigado.
em qual local do .DPR coloque este código? Como abrir uma tela por vez?
Desculpe, sou novato.
Rones.
27/12/2022
Arthur Heinrich
Mas, imagino que você tenha criado um form com um DB Grid ou algo parecido, que está carregando o conteúdo de uma tabela.
O que você espera que ocorra se esta tabela tiver 1 TB?
Componentes que carregam dados de tabela parecem fáceis de usar, mas na prática, são quase inúteis. Antes de carregar os dados, a aplicação precisa definir filtros adequados, que reduzam o volume de dados acessados e, só então, você executa a query com os filtros, dinamicamente.
Clique aqui para fazer login e interagir na Comunidade :)