Ir para conteúdo
Fórum Script Brasil
  • 0

Consumo de memória absurdo


Fuzileir0

Pergunta

Consumo de memória do programa, com duas units e pouquíssimas linhas de código está consumindo 6mb de memória. Quer dizer que minha programação está horrível ou quando eu for compilar o programa pra obter um executável final ele vai diminuir???

(O código é extremamente simples... algumas consultas sql e uns botões..._

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Consumo de memória do programa, com duas units e pouquíssimas linhas de código está consumindo 6mb de memória. Quer dizer que minha programação está horrível ou quando eu for compilar o programa pra obter um executável final ele vai diminuir???

(O código é extremamente simples... algumas consultas sql e uns botões..._

O uso de memória não é problema, mas o uso de CPU sim

No gerenciador de tarefas do windows voce pode perceber que quando voce está com o IEXPLORE aberto, e vai abrindo novas páginas na internet, o tamanho da memória usada para o IEXPLORE vai aumentando sem necessariamente aumentar significativamente o uso da CPU

entretanto uma pesquisa sql pode usar 100% de processamento da CPU, o que travaria outras funções

quando eu for compilar o programa pra obter um executável final ele vai diminuir???

o tamanho que ficar o seu executável é o tamanho que será usado pela memória, entretanto este mesmo executável pode exigir 100 % do processamento da CPU, dependendo do tipo de select feito em suas tabelas

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Consumo de memória do programa, com duas units e pouquíssimas linhas de código está consumindo 6mb de memória. Quer dizer que minha programação está horrível ou quando eu for compilar o programa pra obter um executável final ele vai diminuir???

(O código é extremamente simples... algumas consultas sql e uns botões..._

O uso de memória não é problema, mas o uso de CPU sim

No gerenciador de tarefas do windows voce pode perceber que quando voce está com o IEXPLORE aberto, e vai abrindo novas páginas na internet, o tamanho da memória usada para o IEXPLORE vai aumentando sem necessariamente aumentar significativamente o uso da CPU

entretanto uma pesquisa sql pode usar 100% de processamento da CPU, o que travaria outras funções

quando eu for compilar o programa pra obter um executável final ele vai diminuir???

o tamanho que ficar o seu executável é o tamanho que será usado pela memória, entretanto este mesmo executável pode exigir 100 % do processamento da CPU, dependendo do tipo de select feito em suas tabelas

abraço

Muito estranho isso, porque fiz 2 consultas SQL, tenho uns 5 componentes (de ligação com banco de dados) e alguns botões + Edits... 6mb é muita coisa pra isso, eu acho.

E memória acredito que influencia sim na qualidade do programa. Tanto é que memória usada é uma das diferenças mais comentadas entre IE, opera e firefox...

Link para o comentário
Compartilhar em outros sites

  • 0
Muito estranho isso, porque fiz 2 consultas SQL, tenho uns 5 componentes (de ligação com banco de dados) e alguns botões + Edits... 6mb é muita coisa pra isso, eu acho.

E memória acredito que influencia sim na qualidade do programa. Tanto é que memória usada é uma das diferenças mais comentadas entre IE, opera e firefox...

com relação ao seu programa somente com estes componentes é bem estranho .. pode até ser vírus

este seu executável deveria estar em torno de 200 k no máximo

quando digo que memória não é problema é porque hoje voce pode trocar seu pente de memória por outro de maior capacidade sem problemas.. no entanto o processador e dependendo do chipset não dá pra discutir

exemplo:

tenho máquinas que não suportam a instalação do interbase, não por falta de memória e sim pelo fato do processador ser lento. entendeu ?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Vírus não é... formatei meu PC ONTEM mesmo e instalei só o Delphi, mysql.. daemon tools.. e uns programas necessários e confiáveis (estilo MSN...). Deve haver alguma explicação razoável...

Uma dúvida sobre metodologia... acesso a banco de dados nos programas que vocês que já tem experiência fazem, vocês criam os componentes numa unit e depois só as chamam ou recriam todos os componentes novamente nas novas units?

Outra... preenchi um combobox puxando os dados de um banco de dados, apareceu os dados certinho... mas quando seleciono uma das opções que estão na lista do combobox ele não fica salvo (a lista dropdown fecha e a opção não fica escrita lá no campo). Como posso fazer pra quando a pessoa clicar em determianda opção da dropdown ela fique paradinha ali?

Link para o comentário
Compartilhar em outros sites

  • 0
Consumo de memória do programa, com duas units e pouquíssimas linhas de código está consumindo 6mb de memória. Quer dizer que minha programação está horrível ou quando eu for compilar o programa pra obter um executável final ele vai diminuir???
A memória que você fala qual é ??? pelo que você descreve acima seu aplicativo está consumindo 6MB, ou ocupando 6MB de espaço em disco ???
Quer dizer que minha programação está horrível ou quando eu for compilar o programa pra obter um executável final ele vai diminuir

Então se você ainda nem compilou...como sabe o consumo da memória do seu aplicativo.exe ?

Ou esse consumo é o Delphi que está usando quando você faz o Run ?

Mas tb 6MB não é nada de mais nem sei qual é a sua preocupação ?

No SQL é normal até numa pequena consulta exigir 100 % do processamento da CPU.

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

De uma forma bem simples aqui vai uma pequena dica para a sua Lista .

seleciono uma das opções que estão na lista do combobox ele não fica salvo (a lista dropdown fecha e a opção não fica escrita lá no campo).

private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateListaMaterial; //Aqui você declara o nome da lista que você quer criar.
  end;
// Aqui você cria a Procedure para preencher a lista do combobox.
Procedure TRelatorio2.CreateListaMaterial;
var
i:integer;
begin
Combobox1.clear;
DM.Material.First;//DB que você quer usar
for i:=0 to DM.Material.RecordCount-1 do//DB que você quer usar
begin
Combobox1.Items.Insert(0,DM.MaterialMaterial.value);//DB que você quer usar
DM.Material.next;// DB que você quer usar
end;
Combobox1.Items.Insert(0,'');
Combobox1.text:='Material...';
end;
// Depois você carrega a lista no FormCreate
procedure TRelatorio2.FormCreate(Sender: TObject);
begin
CreateListaMaterial;
end;

Espero ter ajudado,qualquer coisa disponha ok.

Abraço.

Editado por António44
Link para o comentário
Compartilhar em outros sites

  • 0
Consumo de memória do programa, com duas units e pouquíssimas linhas de código está consumindo 6mb de memória. Quer dizer que minha programação está horrível ou quando eu for compilar o programa pra obter um executável final ele vai diminuir???
A memória que você fala qual é ??? pelo que você descreve acima seu aplicativo está consumindo 6MB, ou ocupando 6MB de espaço em disco ???
Quer dizer que minha programação está horrível ou quando eu for compilar o programa pra obter um executável final ele vai diminuir
Então se você ainda nem compilou...como sabe o consumo da memória do seu aplicativo.exe ?

Ou esse consumo é o Delphi que está usando quando você faz o Run ?

Mas tb 6MB não é nada de mais nem sei qual é a sua preocupação ?

No SQL é normal até numa pequena consulta exigir 100 % do processamento da CPU.

Abraço.

Olá António,

6mb não me preocupam. O que me preocupa é o fato de que se algumas consultinhas em SQL estão consumindo 6mb, quando eu for fazer um progama mais complexo ele provavelemente vai utilizar 1GB de ram.

De uma forma bem simples aqui vai uma pequena dica para a sua Lista .

seleciono uma das opções que estão na lista do combobox ele não fica salvo (a lista dropdown fecha e a opção não fica escrita lá no campo).

private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateListaMaterial; //Aqui você declara o nome da lista que você quer criar.
  end;
// Aqui você cria a Procedure para preencher a lista do combobox.
Procedure TRelatorio2.CreateListaMaterial;
var
i:integer;
begin
Combobox1.clear;
DM.Material.First;//DB que você quer usar
for i:=0 to DM.Material.RecordCount-1 do//DB que você quer usar
begin
Combobox1.Items.Insert(0,DM.MaterialMaterial.value);//DB que você quer usar
DM.Material.next;// DB que você quer usar
end;
Combobox1.Items.Insert(0,'');
Combobox1.text:='Material...';
end;
// Depois você carrega a lista no FormCreate
procedure TRelatorio2.FormCreate(Sender: TObject);
begin
CreateListaMaterial;
end;
Espero ter ajudado,qualquer coisa disponha ok. Abraço.
Olha, não entendi seu código... sou novato em delphi e não sei o que é DM.Material.value (ou qual componente é). O código que estou utilizando é este:
zqrConsulta.SQL.Clear;
zqrConsulta.SQL.Add('SELECT nome FROM usuarios WHERE nome <> :nome');
zqrConsulta.ParamByName('nome').AsString := ULogin.frmLogin.edtNome.Text;
zqrConsulta.Open;

while NOT zqrConsulta.EOF do
begin
dbcbxDestinatario.Items.Add(zqrConsulta.Fields[0].AsString);
zqrConsulta.Next;
end;

Ele preenche a combobox, como você pode ver nesta imagem:

img1ij2.jpg

Imagem 1

Mas quando eu clico em "João" ou "Renata", que foram os resultados puxados do BD, ele não seleciona. Ele volta como se eu não tivesse clicado em nada.

img2pi1.jpg

Imagem 2

Agora se eu escrevo "João" ou "Renata", sem clicar em nada e dou um TAB para ir para o componente memo logo abaixo, fica selecionado o nome.

im3xs1.jpg

Imagem 3

O correto, que eu quero que fique é como na Imagem 3, porém quero que funcione também quando clicado sobre um dos resultados puxados do BD. Alguma idéia do que fiz errado?

Link para o comentário
Compartilhar em outros sites

  • 0

private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateListaDestinatários; 
  end;
Procedure TForm1.CreateListaDestinatários;
var
i:integer;
begin
dbcbxDestinatario.clear;
Usuarios.First;
for i:=0 to Usuarios.RecordCount-1 do
begin
dbcbxDestinatario.Items.Insert(0,UsuariosNome.value);
Usuarios.next;
end;
dbcbxDestinatario.Items.Insert(0,'');
dbcbxDestinatario.text:='Destinatário...';
end;
Eu estou usando aqui uma Combobox simples não uma DBCombobox .
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateListaDestinatários
end;

´

Eu não percebo porque você vai retirar a lista de uma consulta SQL se você pode tirar directamente da tabela que suponho que seja '' Usuarios''tente adptar este codigo,eu uso ele para criar minhas listas em Combobox e funciona lindamente ;) .

Abraço.

Editado por António44
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...