O consumo de memoria n茫o esta sendo liberado, quando fecha os m贸dulos.
Vai acumulando.
Alguma solu莽茫o para isto.
Lins-SP - Brasil
FWH 10.9, PellesC,MySql
O consumo de memoria n茫o esta sendo liberado, quando fecha os m贸dulos.
Vai acumulando.
Alguma solu莽茫o para isto.
Aun dejando que el sistema no libre de la memoria, esto ha sucedido a cualquier pantalla, incluso con un simple MsgInfo ().
驴C贸mo resolver esto?
http://img203.imageshack.us/img203/3269/consumomem1.jpg
http://img594.imageshack.us/img594/661/consumomem2.jpg
http://img805.imageshack.us/img805/6095/consumomem3.jpg
http://img534.imageshack.us/img534/1716/consumomem4.jpg
Saluds, Ale
Ainda sem solu莽茫o.
Ola Sergio,
Estou com 8 clientes reclamando que o sistema depois de um certo tempo de uso fica muito lento.
Notei que o xBrowse consome muita memoria, e estou trocando para TSBROWSE no meu modulo de pedidos que 茅 muito usado na esperan莽a de melhorar esta situa莽茫o.
Estou usando FWH 10.2
SGS wrote:Ola Sergio,
Estou com 8 clientes reclamando que o sistema depois de um certo tempo de uso fica muito lento.
Notei que o xBrowse consome muita memoria, e estou trocando para TSBROWSE no meu modulo de pedidos que 茅 muito usado na esperan莽a de melhorar esta situa莽茫o.
Estou usando FWH 10.2

Ale,
A parte de lo comentado anteriormente, la Clase TXBrowse tenia errores importantes en su dise帽o original en relaci贸n al consumo de handles GDI. Estos errores se han ido solucionando y en la actualidad ya no los hay.
En el caso de que est茅s usando una versi贸n no actualizada, esa puede ser perfectamente la causa del consumo de memoria que comentas.
Finalmente a帽adir que la memoria en Harbour no se libera definitivamente hasta que no se llama a hb_gcAll(), que es cuando se invoca al "recolector de basura" de la maquina virtual de Harbour. FiveWin llama a esta funci贸n al salir de una caja de di谩logo, pero no lo hace en otras situaciones. Es por esto que si no se llama a ninguna caja de di谩logo, hay que llamar a hb_gcAll() de vez en cuando para que se libere la memoria no usada. Tampoco hay que abusar en llamar a esta funci贸n pues es un proceso relativamente lento que implica recorrer todos los objetos de memoria que tiene en uso Harbour.
Antonio,
Este es un tema que me interesa y mucho
En mi caso, que casi no tengo dialogos por abrir/cerrar, ya que todo lo manejo en pesta帽as de Folders lo mas adecuado seria montar un timer : unas 7 veces por dia seran suficientes ?
Algo similar me pasaba hace no mucho con los recordsets, seguramente algo no estaba haciendo bien pero el asunto es que cada vez que cambiaba de fila, como se disparaba un evento en el on change de un browse para mostrar ciertos datos, me iba consumiendo memoria ( 4 - 8 kb ) pero ya haciendo cuentas al final del dia se hubiera quedado sin recursos la pc, asi que probando y rastreando en que momento/lugar sucedia me di cuenta que era al generar el RS, asi que al usar el GetRows() y manejar los datos en array no generaba ningun incremento.
Saludos
Raymundo,
En vez de plantear el llamar a hb_gcAll() un n煤mero x de veces, seria preferible llamarle cuando la memoria sobrepase un determinado valor, pues depende de la cantidad de trabajo que este haciendo el programa, 贸 de cuanto se est茅 usando.
Otra opci贸n ser铆a que cada x veces que se llame a una opcion del programa, se llame a hb_gcAll(). Tampoco es necesario usar un timer. Por ejemplo, despues de realizar un proceso que implique usar bastante memoria, llamar a hb_gcAll() est谩 bien.
Lo que no hay que hacer es estar llam谩ndolo a cada instante ![]()
Antonio,
Ok, entendido y anotado !
Tal y como se dice por aca : Ni tanto que queme al Santo, ni tanto que ni lo alumbre !
De hecho, creo que solo me falta checar al momento de mostrar/cambiar alguna imagen de los items, ahi es donde veo que todavia me incrementa, recuerdo haber leido algun post con una lineas para "tumbar" los handles u objetos de la memoria, deja lo busco para aplicarlo, si tu lo recuerdas te agradeceria el link.
Saludos y Gracias