In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Posible perdida de recursos ????

Foro de Xailer profesional en español
Responder
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Posible perdida de recursos ????

Mensaje por bingen »

Hola Xailer Team.

Me he dado cuenta de que cada vez que instanciamos un form y lo cerramos perdemos apenas 4Kb que nos son devueltos al cerrar la aplicación, pero esto con el tiempo en aplicaciones que no se cierran durante semanas o meses se convierte en un problema.

Adjunto un pequeñisimo ejemplo de 20 líneas que abre y cierra, mata, destruye 200 form para ver si lo pueden probar por favor y me cuentan si es un problema nuestro o es general.

Probado sobre W10 64 Bits, Xailer 4.0.2 y la 4.9 Beta y para comprobarlo basta con abrir el administrador de tareas para ver como crece el consumo de memoria de la aplicación.

Gracias
Adjuntos
CtrlDataSet.zip
(2.29 KiB) Descargado 137 veces
BiSoft Desarrollo de software profesional
http://www.bisoft.es
avitalini
Mensajes: 141
Registrado: Mié Ene 07, 2015 6:31 pm

Re: Posible perdida de recursos ????

Mensaje por avitalini »

Bingen:

Ya lo probé, igual en W10 64bits Xailer 4.0.2.

Y efectivamente cada apertura y cierre gasta 4K lo probé hasta 160 veces nada más. Los gdi si regresan de 45 a 41, pasados unos segundos.

Saludos
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Posible perdida de recursos ????

Mensaje por bingen »

Gracias por probarlo, no se si hacemos algo mal pero como se ve no podemos hacer mas para acabar con el form.

Salu2.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Posible perdida de recursos ????

Mensaje por bingen »

Alguien más lo puede probar con otras versiones de Windows y/o Xailer por favor.

Gracias.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Posible perdida de recursos ????

Mensaje por jfgimenez »

Bingen,

lo he estado probando, y estoy seguro al 99,99% de que no hay ninguna pérdida de memoria.

El administrador de tareas de windows no es un método fiable para comprobar las pérdidas de memoria. Ahí sólo se muestra la cantidad de memoria que windows tiene asignada a ese proceso, y casi nunca coincide con la cantidad de memoria que está realmente usando el programa. El gestor de memoria de windows funciona de forma un tanto especial. Cuando un programa solicita un bloque de memoria y después lo devuelve, windows normalmente lo mantiene asignado a ese proceso "por si hiciera falta de nuevo". Sólo cuando windows necesita la memoria física para otros procesos, o cuando lo considera oportuno, es cuando realmente retira esa memoria y lo refleja en el administrador de tareas.

Para que puedas ver lo que digo he modificado ligeramente tu ejemplo (adjunto). La diferencia es que al terminar el bucle no sale del programa, y tienes un botón en el formulario principal para volver a lanzarlo. Prueba a ejecutar las 200 iteraciones del bucle. Después, pulsa el botón y deja unas pocas (10 ó 12) iteraciones más y cancela. Verás que oscila muchísimo, y en determinados momentos recupera los valores (casi) iniciales de consumo de memoria.

Para estar más seguro, lo he ejecutado bajo un viejo programa que tengo para comprobar pérdidas de recursos y memoria (memproof), y no he detectado nada anormal. Hay algunos bloques de memoria que nunca se devuelven, pero están ahí a propósito. Son bloques de memoria pequeños que reserva Xailer para su uso, que no crecen y que sólo se liberan al cerrar el programa. Ese comportamiento es normal, conocido, y está bajo control. Es más, en ningún caso esos bloques crecen, con lo que no pueden provocar la falta de memoria aunque el programa sea un 24h 365 días.
Adjuntos
CtrlDataSet.zip
(2.38 KiB) Descargado 125 veces
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Re: Posible perdida de recursos ????

Mensaje por Carlos Ortiz »

para mi sin ser un conocedor del tema tiene que ver con los elementos GDI que nunca se terminan de libertar y que por algun motivo estan clavados en 10.000, cuando pasa de ahi el exe se pone completamente loco y se cierra, normalmente borra lo que crea pero por algún motivo Mocosoft sigue sin liberar cosas o algun recolector o limpiador no funciona.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Posible perdida de recursos ????

Mensaje por jfgimenez »

Carlos,

en principio no tiene nada que ver los recursos GDI con las pérdidas de memoria. Efectívamente hay un límite en windows de 10.000 objetos GDI por proceso, pero es que ningún programa debería llegar a ese límite. Si llega ahí es porque hay recursos que no se están liberando a causa de algún bug.

En Xailer tenemos un "detector" de objetos GDI, como ayuda para la depuración. Lo puedes ver en la pestaña "recursos" de la ventana del debugger. Están separados por tipo, con un total al final (ojo, que 'other' no está incluido en el total). Si durante la ejecución del programa ves que hay algún recurso que crece sin parar, entonces es que hay un problema. Debes revisarlo a fondo hasta encontrarlo y corregirlo. Actualmente no tenemos ninguna noticia de pérdidas de recursos por parte de Xailer, pero si detectas que algún control tiene este problema, por favor, envíanos un pequeño ejemplo para probarlo.

Como aclaración, tengo que decir que hay algunos recursos que crea Xailer y que no libera intencionadamente, pero son muy pocos. P.ej., los cursores de TSplitter, tanto horizontal como vertical, se crean la primera vez que se usan, y no se liberan para tenerlos disponibles cuando se vuelvan a usar. De todos modos, en total habrá alrededor de una docena de recursos de este tipo, y como comprenderás, esto no afecta negativamente en ningún modo.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Re: Posible perdida de recursos ????

Mensaje por Carlos Ortiz »

Gracias José por tus sugerencias siempre son tenidas en cuenta por mi, esto que te comentaba sucede cuando abrís muchas pestañas (alrededor de 30 o un poco mas) ahi se va todo a la banquina (pero claro no es algo normal abrir tantas pestañas de la clase FormFolder)

Saludos!
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Posible perdida de recursos ????

Mensaje por bingen »

Gracias Jose, me alegro de estar equivocado y de que sea Windows el que me engaña.

Lo hemos comentado aquí por que nos había parecido extraño.

Pruebo tu ejemplo y te cuento.

Salu2.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Posible perdida de recursos ????

Mensaje por jfgimenez »

Carlos Ortiz escribió:Gracias José por tus sugerencias siempre son tenidas en cuenta por mi, esto que te comentaba sucede cuando abrís muchas pestañas (alrededor de 30 o un poco mas) ahi se va todo a la banquina (pero claro no es algo normal abrir tantas pestañas de la clase FormFolder)

Saludos!
Entiendo que te estás refiriendo al IDE de Xailer. Pues no debería pasar eso. Si ocurre es, o bien por algún bug en la versión que estás usando, o porque realmente se haya sobrepasado el límite. Esto último puede ocurrir, aunque no es normal. Hay que tener en cuenta que cada control puede llegar a estar usando varios objetos GDI (handle, brush, pen, font, ..., aunque algunos de ellos sólo se utilizan durante el pintado y se liberan); si vas sumando todos los controles que tengas en cada formulario, y sumando todos los formularios que tengas abiertos en un momento dado, la cifra puede llegar a ser bastante alta. Es más, el propio IDE ya necesita unos cuantos objetos de por sí.

Acabo de hacer una prueba... he abierto el IDE sin abrir ningún proyecto. De esta forma, ya me está ocupando poco más de 1.100 objetos GDI. A continuación he abierto varias ventanas (configuración general, configuración del editor, abrir proyecto, etc.), y sólo se ha incrementado en unos pocos objetos GDI. He probado a abrir y cerrar varios proyectos, incluso proyectos bastante grandes con bastantes subproyectos, y el valor anterior se ha mantenido.

A continuación, en un proyecto bastante grande, he ido abriendo módulos, hasta un total de 63 pestañas. En aquellos módulos correspondientes a formularios, he mostrado el formulario pulsando F12 para forzarlo a crear todos sus controles y componentes; en total 42 formularios. Ten en cuenta que son formularios reales de un proyecto real, unos más sencillos y otros más complejos, con varias pestañas llenas de controles. Finalmente he llegado a 4.613 objetos GDI, por lo que todavía tendría mucho margen para seguir abriendo pestañas y formularios. Así, a simple vista, creo que fácilmente se podría llegar a tener alrededor de un centenar de formularios abiertos en el IDE sin problema.

Si a tí te está llegando al límite, entonces debe ser por algún bug en algún sitio. O bien en el IDE, o en algún control que estés usando, o incluso en alguna librería de terceros o algún plugin que tengas.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Re: Posible perdida de recursos ????

Mensaje por Carlos Ortiz »

Antes que nada voy a activar mi Xailer 4 que lo compre el año pasado y todavía esta sin abrir y voy a migrar de la 2.4 que uso ahora al nuevo, quizás tengo cosas muy viejas, gracias José.
Saludos desde Argentina
Responder