Page 1 of 1

TGraph no libera algún recurso

PostPosted: Tue Nov 15, 2016 11:09 am
by AngelSalom
Hola amigos, uso de forma bastante intensiva la clase tGraph y algunos clientes me han reportado cuelgues en la aplicación que, analizando el funcionamiento, deriva en una carga de memoria que se incrementa en cada diálogo que se utiliza mostrando un gráfico con tGraph. He podido observar que cada vez que se muestra una gráfica se ocupa una parte de memoria que no queda liberada.

Se puede ver en \samples\tgraph\test.prg creando múltiples ventanas del gráfico, poco a poco va incrementando el uso de la memoria (totalmente normal), pero al cerrar estas ventanas no se libera éste uso.
¿Alguna pista?

Muchas gracias.

Re: TGraph no libera algún recurso

PostPosted: Tue Nov 15, 2016 11:55 am
by Antonio Linares
Angel,

Lo primero sería probar SetResDebug() para ver que tipo de objetos GDI no se estan liberando (brushes, bitmaps, etc.)

http://wiki.fivetechsoft.com/doku.php?id=fivewin_function_setresdebug

una vez sepamos cuales son, lo siguiente es ver en la clase donde no se están liberando

Re: TGraph no libera algún recurso

PostPosted: Tue Nov 15, 2016 2:18 pm
by AngelSalom
Gracias, Antonio, es lo primero que he probado. No deja rastro de objetos que no se liberen.

Re: TGraph no libera algún recurso

PostPosted: Tue Nov 15, 2016 2:30 pm
by AngelSalom

Re: TGraph no libera algún recurso

PostPosted: Tue Nov 15, 2016 7:58 pm
by Antonio Linares
Angel,

Prueba a llamar a hb_gcAll() despues de terminar de mostrar un gráfico

Re: TGraph no libera algún recurso

PostPosted: Tue Nov 15, 2016 8:53 pm
by AngelSalom
Gracias por la pista Antonio, esta función me recordó a MemoryFlush() , de este modo liberó la memoria correctamente.
Ahora bien, ¿alguna lógica? ¿Quizás la cantidad de arrays que maneja tGraph queden en memoria?
Bueno, de momento, problema solventado.
Gracias!

Re: TGraph no libera algún recurso

PostPosted: Tue Nov 15, 2016 9:03 pm
by Antonio Linares
Muy bien :-)

Al no quedar objetos GDI, teniamos que comprobar el consumo de memoria de Harbour, y hemos acertado

Posiblemente sea por los arrays, como tú comentas