Clipper On Line • Ver Tópico - memória com xharbour .99

memória com xharbour .99

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

memória com xharbour .99

Mensagempor carlos_dornelas » 11 Fev 2021 14:20

Boa tarde!

Qual a maneira correta de utilizar o hb_gcall ? Aqui no forum mesmo vi hb_gcall(.t.), hb_gcall(.f.) e hb_gcall()... na verdade não vi diferença usando ou não o parametro...

Em um programa especifico, utilizando o xharbour .99 + gtwvw, ocorre esse problema em uma rotina repetitiva. Depois de um tempo, acaba aparecendo
o erro conforme mensagem anexa e o programa aborta..

Alguém tem alguma dica?

[]s
Anexos
error 9009.jpg
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 392
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 10 vezes

memória com xharbour .99

Mensagempor Kapiaba » 11 Fev 2021 15:47

 hb_gcall(.t.) // força a limpeza de basuras(lixo) se tem ou não.

hb_gcall(.f.)  // força a limpeza, apenas se tiver(recomendado).


Este estouro de pilha, ocorre, principalmente, se a máquina for com windows de 64 bits e com apenas 4 Gbs de RAM. Recomenda-se em windows de 64 bits, um mínimo de 8 Gbs de RAM ou mais, se possível.

Em WHILE... ENDO muito demorados, recomenda-se o uso do SYSREFRESH() -> em FiveWin, veja na sua linguagem, se tem o comando equivalente.

Espero ter ajudado.

Abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

memória com xharbour .99

Mensagempor carlos_dornelas » 11 Fev 2021 16:22

Obrigado por responder!

Tanto (.t.) quanto (.f.) não funcionou aqui... a memória vai se esvaindo à medida que o do while vai avançando...

Não utilizo o FiveWin, mas você poderia postar essa função SYSREFRESH() aqui para eu analisar?

[]s

Carlos Dornelas
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 392
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 10 vezes

memória com xharbour .99

Mensagempor Kapiaba » 11 Fev 2021 18:31

Desculpe, SYSREFRESH() é uma função própria do FiveWin, e ela não foi disponibilizada pela FiveTech. Mas, mesmo com o FiveWin, usando esta função, se o cliente não colocar 8 Gbs de RAM, o estouro continuará.

Ai, ou usamos uma versão velha do FiveWin compilada com o BCC55, sem os novos Recursos para os novos windows, ou ele aumenta os Pentes de memória RAM. Enfim, o cliente não tem saida, quer modernidade, tem que se adaptar ao mercado. O barato sai caro... Compra uma super máquina com motor de fusca? Não dá, né?

Que BCC está usando? Qual é a memória RAM desta máquina que estoura a pilha? Será que não queimou um Pente?

Não tem como você "quebrar" este WHILE em vários?

Você usa muitas chamadas Recursivas nesta linguagem? Fecha tudo ao sair? Ao fechar programa, dá um CLEAR ALL?

Usa BitMaps? Alguma coisa que poderia estourar a memória? Pois, se o sistema for em MODO CONSOLE, e o BCC for o 55, ele não consome quase nada de memória. Tem que ser outra coisa, algum tipo de recurso usado, tipo uma BITMAP que está corrupta ou com um tamanho absurdo. Investigue mais a fundo, ou nos dê mais detalhes.

Abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

memória com xharbour .99

Mensagempor carlos_dornelas » 11 Fev 2021 19:00

Desculpe, SYSREFRESH() é uma função própria do FiveWin, e ela não foi disponibilizada pela FiveTech. Mas, mesmo com o FiveWin, usando esta função, se o cliente não colocar 8 Gbs de RAM, o estouro continuará.


Ok, sem problemas. Descobri o que estava "comendo" a memória!

Tinha uma declaração de matriz dentro de um FOR NEXT que por sua vez está dentro de um DO WHILE...

Apenas alterei de DECLARE MATRIZ[8] para MATRIZ:={} e os problemas acabaram!!

Fica aí a dica, se alguém passar pelo mesmo problema. Provavelmente no harbour 3.2 ou 3.4 isso tenha sido resolvido.

[]s

Carlos Dornelas
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 392
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 10 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro