Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

quarta-feira, 24 de agosto de 2016

Delphi - Comando para redução de memória - Command to memory reduction

Reações: 
Retirado de: http://www.agnaldocarmo.com.br/home/comando-milagroso-para-reducao-de-memoria-delphi/
Quando você cria uma aplicação Delphi, tudo é um objeto, o Formulário é um objeto, cada objeto ocupa um espaço da memória gerenciado pelo programa após ser instanciado. E todo objeto após ser utilizado deve ser destruído para que esta memória seja liberada…

O que a maioria dos programadores não sabem é que, especificamente em Delphi que não existe “Coletor de Lixo de memória” como na plataforma .NET. Existe uma memória residual que nunca é liberada mesmo que você destrua todos os objetos que instanciar, porque é uma parta da memória que é administrada pelo próprio Sistema operacional. Se você deixar o seu aplicativo aberto, e efetuar diversas ações que interajam com as APIs do Windows ou DLL externas, trabalhar multi-camadas através de sockets…. Ou mesmo fazer movimentos simples como minimizar ou maximizar sua aplicação… Você perceberá que memória reservada no gerenciador de tarefas para o processo do seu executável crescerá. E muitos destes movimentos como maximiza e minimizar, é a parte não gerenciável da memória de sua aplicação pois ela ocorre na própria interação do Sistema Operacional com sua aplicação.

Este procedimento localiza o processo da aplicação, e limpa toda memória residual…
procedure TrimAppMemorySize;
var
  MainHandle : THandle;
begin
  try
    MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
    SetProcessWorkingSetSize(MainHandle, $FFFFFFFF, $FFFFFFFF);
    CloseHandle(MainHandle);
  except
  end;
  Application.ProcessMessages;
end;

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.

Max Gehringer