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
memória com xharbour .99
Moderador: Moderadores
-
carlos_dornelas
- Usuário Nível 3

- Mensagens: 400
- Registrado em: 25 Ago 2004 21:54
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
memória com xharbour .99
Código: Selecionar todos
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).
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.
-
carlos_dornelas
- Usuário Nível 3

- Mensagens: 400
- Registrado em: 25 Ago 2004 21:54
memória com xharbour .99
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
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
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
memória com xharbour .99
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.
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.
-
carlos_dornelas
- Usuário Nível 3

- Mensagens: 400
- Registrado em: 25 Ago 2004 21:54
memória com xharbour .99
Ok, sem problemas. Descobri o que estava "comendo" a memória!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á.
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