Serio Problema Hellp !!!! - Avançado !!!!
11/08/2003
0
Ai vai
Tenho uma aplicação toda em Kylix com interbase , mas estou com serios problemas de memoria em minha aplicação ! .
A aplicação e toda grafica , e tenho diversas telas , mas tem um problema quando carrego uma tela ela aloca em memoria , mas quando saio da tela dou um CAFREE mas não descarrega ! a tela fechada se mantem em memoria !!! isso , esta ferrando a aplicaçÃo ..
Aguardou um help e agradeço desde já !!!
Freina
Posts
19/08/2003
Andredelfino
Ex:
if form2 = nil then
application.createform(tform2,form2);
form2.showmodal;
freeAndNill(form2);
espero ter colaborado.
boa sorte
20/08/2003
Freina
Isso tá me deixando louco !!!!!
HELLP !!!!
20/08/2003
Allen74
Se tiver como, poste aqui o trecho de código onde você faz a carga dos arquivos e também trechos onde você cria e destrói objetos dentro de seu formulário, geralmente nos eventos OnCreate e OnDestroy.
22/08/2003
Freina
Chamada do Formulario: // os formularios sao chamados a partir do evento on click de um objeto TImage...
OnImageClick
begin
if nome_form = nil then
Application.CreateForm(tnome_form, nome_form);
nome_form.Show;
end;
OnFormShow;
begin
Image1.Picture.LoadFromFile(´botao.jpg´) Image2.Picture.LoadFromFile(´botao.jpg´)
Image3.Picture.LoadFromFile(botao.jpg´)
end;
OnFormClose;
begin
Action := CaFree;
nome_form := nil;
end;
Ja tentei dar um Free no TImage mas comecou a dar Access Violation na recarga do formulario...
30/08/2003
Paulopapesso
624 -A melhor maneira de liberar um form da memoria
Quando você usa Form.Free ou Form.Destroy, você está imediatamento solicitando a destruição do formulário. Com Form.Release, todas as mensagens pendentes no pool do formulário são postadas - exemplo: redesenho do formulário, movimento do mouse, pressionamento de tecla,...
use assim:
FormXX := TFormXX.create ( application );
try
FormXX.ShowModal
finally
FormXX.Release;
FormXX := nil;
end;
boa sorte!
01/09/2003
Allen74
Não acho que seja um problema do Kylix. O problema pode estar em algum código de alocação de memória.
Vamos por partes:
1 - Você removeu da lista de Auto-create forms todos os formulários que você cria dinamicamente via código? (Application.CreateForm).
2 - Você cria algum outro componente dinamicamente dentro do formulário?
3 - Ao navegar entre os formulários, são perdidos de 100K a 200K de memória quando você alterna os formulários já abertos ou somente quando você abre um formulário que ainda não estava visível?
Se puder, poste o código do menor destes formulários que contém imagens, ou então mande para meu e-mail se preferir. Você já verificou se ao fechar o programa a memória que antes estava perdida é devolvida ao Sistema Operacional?
02/09/2003
Freina
Só o formPricipal e os data modules estão na lista de forms .
Não crio nem um componente dinamicamente , ´so as imagens , são carregadas automaticamente , mas quando dou um close no form ´teoricamente isso tinha que sair da memoria junto com o form ´.
Exemplo de navegação !
Fom1 = 100 kb de uso em memoria
Form1 abro o form2 = 200 k de uso em memoria
form2 fecho o form2 e retorno para o form1 = 200k de memoria.
Eu carrego os JPEG no evento OnShow do formulario... Acontece que esses componentes images fazem a funcão de botões do sistema... É assim que eles sao carregados:
Chamada do Formulario: // os formularios sao chamados a partir do evento on click de um objeto TImage...
OnImageClick
begin
if nome_form = nil then
Application.CreateForm(tnome_form, nome_form);
nome_form.Show;
end;
OnFormShow;
begin
Image1.Picture.LoadFromFile(´botao.jpg´) Image2.Picture.LoadFromFile(´botao.jpg´)
Image3.Picture.LoadFromFile(botao.jpg´)
end;
OnFormClose;
begin
Action := CaFree;
nome_form := nil;
end;
Clique aqui para fazer login e interagir na Comunidade :)