Out of Memory
Ola Pessoal,
Tenho um sistema porém o mesmo já esta com um tamanho consideravel...Com isso algumas vezes quando vou compilar o projeto da a mensagem ´[b:121271d0ca]Out of Memory[/b:121271d0ca]´...
Gostaria de saber por onde posso começar a verificar para resolver este problema? Ou se tem algum material interessante que possa me ajudar...
Algumas dicas seriam interessantes, bem como se existir alguma propriedade do Delphi ou opção para ajudar a evitar/tratar tal mensagem...
Se alguém puder ajudar ficaria grato...
vlw
Tenho um sistema porém o mesmo já esta com um tamanho consideravel...Com isso algumas vezes quando vou compilar o projeto da a mensagem ´[b:121271d0ca]Out of Memory[/b:121271d0ca]´...
Gostaria de saber por onde posso começar a verificar para resolver este problema? Ou se tem algum material interessante que possa me ajudar...
Algumas dicas seriam interessantes, bem como se existir alguma propriedade do Delphi ou opção para ajudar a evitar/tratar tal mensagem...
Se alguém puder ajudar ficaria grato...
vlw
Fernando Piccini
Curtidas 0
Respostas
Marcosrocha
24/08/2007
Fernando eu nunca ví isso não! Tenho aplicações com mais de 200.000 linhas de código com tamanho de 10 MB e jamais aconteceu tal evento comigo. Detalhe, usando 256 MB de Ram... Tente verificar se ao compilar, não há muitos processos rodando em sua máquina... Talvez pode ser isso... Se alguém mais tiver idéias favor ajudar.... :)
GOSTEI 0
Rodc
24/08/2007
Cara, eu tenho este problema no meu sistema em C++Builder. Só que ele só acontece de vêz em quando e quando estou em modo de debug. Por isto não me preoculpei de ir a fundo para resolver o problema.
Meu sistema também esta grande e usa um componente de Skin que usa muita memória para se atualizar. Por isto, sempre que meu sistema está trocando de tela e processando alguma rotina que também pegue muita memória, o erro aparece.
Tente deixar a menor quantidade possível de classes em memória. Ou seja, crie os formulários apenas se for usar e destrua após a utilização.
Caso tenha mais alguma informação sobre o assunto avise aqui no forum que isto também me interessa.
Abraços,
Meu sistema também esta grande e usa um componente de Skin que usa muita memória para se atualizar. Por isto, sempre que meu sistema está trocando de tela e processando alguma rotina que também pegue muita memória, o erro aparece.
Tente deixar a menor quantidade possível de classes em memória. Ou seja, crie os formulários apenas se for usar e destrua após a utilização.
Caso tenha mais alguma informação sobre o assunto avise aqui no forum que isto também me interessa.
Abraços,
GOSTEI 0
Marcosrocha
24/08/2007
crie os formulários apenas se for usar e destrua após a utilização.
Exemplo de criação / destruição correta de formulários e liberar memória
procedure TFrmMain.Cadastro1Click(Sender: TObject); begin Application.CreateForm(TFrmCadastro, FrmCadastro); FrmCadastro.ShowModal; // no meu caso uso sempre modal FreeAndNil(FrmCadastro); // efetua o Free no Form e também limpa o setor de memoria que foi alocado por ele end;
GOSTEI 0
Nerdex
24/08/2007
Se realmente não existe erro lógico na tua aplicação leia abaixo:
Olá Fernanda, já adiantando ... sim! ... tem como configurar pelo Delphi o ´´aumento de memória´, para isto basta ir em Project > Optinos e na aba Linker veja nos campos: Min Stak Size e Max Stack Size. Aumente(em haxadecimal) o valor no campo Max Stack Size.
Outro ítem importante sobre o assunto é, se vc utiliza Delphi 7 ou inferiores, te peço que intere-se sobre o gerenciador de memória FastMM (aqui no fórum tem uns posts meus sobre isso). E claro! ... verifique a quantidade de memória física na tua máquina e confira o consumo desta aplicação com o auxílio do Gerenciador de Tarefas do Win.
[]´s
Olá Fernanda, já adiantando ... sim! ... tem como configurar pelo Delphi o ´´aumento de memória´, para isto basta ir em Project > Optinos e na aba Linker veja nos campos: Min Stak Size e Max Stack Size. Aumente(em haxadecimal) o valor no campo Max Stack Size.
Outro ítem importante sobre o assunto é, se vc utiliza Delphi 7 ou inferiores, te peço que intere-se sobre o gerenciador de memória FastMM (aqui no fórum tem uns posts meus sobre isso). E claro! ... verifique a quantidade de memória física na tua máquina e confira o consumo desta aplicação com o auxílio do Gerenciador de Tarefas do Win.
[]´s
GOSTEI 0
Marcosrocha
24/08/2007
tem como configurar pelo Delphi o ´´aumento de memória´
Por padrão, o Delphi traz:
[b:3611e654a4]Min stack size:[/b:3611e654a4] [color=red:3611e654a4][b:3611e654a4]$00004000[/b:3611e654a4][/color:3611e654a4]
[b:3611e654a4]Max stack size:[/b:3611e654a4] [color=red:3611e654a4][b:3611e654a4]$00100000[/b:3611e654a4][/color:3611e654a4]
[b:3611e654a4]Image base:[/b:3611e654a4] [color=red:3611e654a4][b:3611e654a4]$00400000[/b:3611e654a4][/color:3611e654a4]
GOSTEI 0
Rodc
24/08/2007
Já havia tentado aumentar o StackSize, mas na via das dúvidas fui testar novamente. Aumentei o MaxStackSize e o MaxHeapSize para o valor máximo permitido e não resolveu o problema.
GOSTEI 0
Marcosrocha
24/08/2007
E claro! ... verifique a quantidade de memória física na tua máquina e confira o consumo desta aplicação com o auxílio do Gerenciador de Tarefas do Win.
Quanto de memória disponível (FÍSICA) você tem e quanto de memória virtual?
Eu tenho 512 Mb Física num total de 1122 Mb (Física + Virtual) e sempre ocupo em média 250 Mb quando estou programando / debugando.
GOSTEI 0
Rodc
24/08/2007
Você quer dizer Memória física+paginação?
Tenho 512 física + 760 de paginação. Mas a paginação está configurada para ir até 2GB.
Debugando o aplicativo eu estou usando 418MB de paginação e tem 240Mb de memória física disponível.
No momento do erro estava usando 419MB de paginação e tinha 236MB livres de memória física.
O aplicativo que eu estava debugando estava usando 21MB de memória física e 78MB de paginação
Tenho 512 física + 760 de paginação. Mas a paginação está configurada para ir até 2GB.
Debugando o aplicativo eu estou usando 418MB de paginação e tem 240Mb de memória física disponível.
No momento do erro estava usando 419MB de paginação e tinha 236MB livres de memória física.
O aplicativo que eu estava debugando estava usando 21MB de memória física e 78MB de paginação
GOSTEI 0
Fernando Piccini
24/08/2007
Ola Pessoal,
Agradeço pela colaboração ai...
Vou testar a opção de MaxStackSize para ver se vai resolver...
se alguém tiver novas sugestões seria de grande importancia uma vez que muita gente deve ja ter o mesmo problema em suas aplicações e projetos...
vlw
Agradeço pela colaboração ai...
Vou testar a opção de MaxStackSize para ver se vai resolver...
se alguém tiver novas sugestões seria de grande importancia uma vez que muita gente deve ja ter o mesmo problema em suas aplicações e projetos...
vlw
GOSTEI 0
Fernando Piccini
24/08/2007
Estava a mais de um ano atras de uma solução para isso,
também já tinha alterado Min stack size Max stack no Delphi: Linker / Memory Sizes, porém não mudou nada...
Padrão do Delphi 6
Torna-se necessário disponibilizar arquivos de configuração...
Segue e-mail abaixo para disponibiliza-los:
piccini.fernando@gmail.com
também já tinha alterado Min stack size Max stack no Delphi: Linker / Memory Sizes, porém não mudou nada...
Padrão do Delphi 6
Min stack size: $00004000 Max stack size: $00100000 Image base: $00400000
Torna-se necessário disponibilizar arquivos de configuração...
Segue e-mail abaixo para disponibiliza-los:
piccini.fernando@gmail.com
GOSTEI 0
Rodc
24/08/2007
[quote:6f91742795=´Fernando Piccini´]Torna-se necessário disponibilizar arquivos de configuração...[/quote:6f91742795]
O que seria estes arquivos de configuração? O que eles configuram?
O que seria estes arquivos de configuração? O que eles configuram?
GOSTEI 0
Fernando Piccini
24/08/2007
Ola rodc,
São arquivos necessários para não ocorrer mais o problema do out of memory. Para Delphi 6 nunca mais aconteceu o erro (O que foi testado).
Obs: Não verifiquei se em versões posteriores do Delphi ainda acontece o ´Out of Memory´
:)
São arquivos necessários para não ocorrer mais o problema do out of memory. Para Delphi 6 nunca mais aconteceu o erro (O que foi testado).
Obs: Não verifiquei se em versões posteriores do Delphi ainda acontece o ´Out of Memory´
:)
GOSTEI 0
Fernando Piccini
24/08/2007
Ola Sr,
Para resolver o problema de Out of Memory no Delphi precisa trocar o arquivo ´RLINK32.dll´ que se encontra na pasta C:\Arquivos de programas\Borland\Delphi7\Bin por uma versão mais atualizada desta mesma DLL.
Obs: Esta solução foi testada e funciona para Delphi 6.
Para resolver o problema de Out of Memory no Delphi precisa trocar o arquivo ´RLINK32.dll´ que se encontra na pasta C:\Arquivos de programas\Borland\Delphi7\Bin por uma versão mais atualizada desta mesma DLL.
Obs: Esta solução foi testada e funciona para Delphi 6.
GOSTEI 0