Consumindo 32Mb de ram.... oq fazer???

Delphi

27/01/2004

Olá pessoal, fiz m$$¬, na outra msg, por isso fui bloqueado....mas será q alguem pode me ajudar?estou no fim de um programa e ele está consumindo 32mb de ram, aki na minha makina com 512mb roda blz, o problema nos usuarios....ja coloquei metades dos forms apra serem criados e zerados a mao....mas nu madiantou nada, será q é culpa deste dm cheio de querys??oq fazer?


Borland_ale

Borland_ale

Curtidas 0

Respostas

Beppe

Beppe

27/01/2004

Você pode reduzir o consumo mantendo apenas os forms necessários na memória, criando quando precisar exibir. Remover recursos(imagens, etc) do programa e deixar em arquivos separados(e carregar em runtime) também é uma boa opção.


GOSTEI 0
Borland_ale

Borland_ale

27/01/2004

Você pode reduzir o consumo mantendo apenas os forms necessários na memória, criando quando precisar exibir. Remover recursos(imagens, etc) do programa e deixar em arquivos separados(e carregar em runtime) também é uma boa opção.


valeu, os forms ja fiz um teste, e mesmo chamando a mão num adianta nada, o executavel fica com 2mb, até q não é malz... o problema é q qdo abro o gerenciador de tarefas do wndows ele me diz q meu programa da consumindo 32 mb, e tem makina de usuario q eu testei e num carrega nem a pau...


GOSTEI 0
Ldsirene

Ldsirene

27/01/2004

Meu uma possivel solução:
Vá no menu Project-->Options
e na guia Forms, coloca todos os forms que seu sistema tem na parte ´Available forms´, deixando somente o form da tela principal na parte ´Auto-create forms´. Isso significa que só o principal será chamado e carregado na memória ao iniciar o sistema.
Em cada parte que vc chama uma tela do sistema tente algo assim:

if frmLogon_chefe = nil then
begin
frmLogon_chefe := TfrmLogon_chefe.Create(Application);
frmLogon_chefe.ShowModal;
end;

Neste exemplo o usuario clica num botão que chama o form frmLogon_chefe. Só abrira se o form estiver fora da memória, não carregado.

Lembrando que no evento OnClose de cada form (menos o principal), deve colocar assim:

Action := caFree;
frmLogon_chefe := nil;

Para tirar o form da memória ao fecha-lo!!!

Faço isso e meus sistemas que chegam a abrir até 3 telas de uma vez rodam em qualquer máquina, até 586!

Tenta lá e boa sorte.


GOSTEI 0
Borland_ale

Borland_ale

27/01/2004

Meu uma possivel solução: Vá no menu Project-->Options e na guia Forms, coloca todos os forms que seu sistema tem na parte ´Available forms´, deixando somente o form da tela principal na parte ´Auto-create forms´. Isso significa que só o principal será chamado e carregado na memória ao iniciar o sistema. Em cada parte que vc chama uma tela do sistema tente algo assim: if frmLogon_chefe = nil then begin frmLogon_chefe := TfrmLogon_chefe.Create(Application); frmLogon_chefe.ShowModal; end; Neste exemplo o usuario clica num botão que chama o form frmLogon_chefe. Só abrira se o form estiver fora da memória, não carregado. Lembrando que no evento OnClose de cada form (menos o principal), deve colocar assim: Action := caFree; frmLogon_chefe := nil; Para tirar o form da memória ao fecha-lo!!! Faço isso e meus sistemas que chegam a abrir até 3 telas de uma vez rodam em qualquer máquina, até 586! Tenta lá e boa sorte.


valeu :) o negocio dos forms ja fiz com os forms q eram possiveis, tipo tem uns q fica mais complicado, pois preciso respeitar valores de combobox, pois é um wizard.... mas ainda acho q tem algo a ver com as querys do dm, deve ter mais de vinte querys.....


GOSTEI 0
POSTAR