Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2005
1111111 1111111 is offline
No confirmado
 
Registrado: feb 2005
Ubicación: Ciudad Jardín
Posts: 25
Poder: 0
1111111 Va por buen camino
Unhappy Excesivo consumo de memoria

Hola a todos.

Situación: Desarrollé una aplicación en Delphi 7, usé Interbase 6.0 y los componentes IBX.

Problema 1: La aplicación a medida que va haciendo querys, va consumiendo mas memoria y no la libera en ningun momento... Estoy un 99% seguro que en todos los casos se hace su respectivo Commit (no CommitRetaining), dejo el 1% de duda por si alguien me dice que el no hacer un Commit puede generar este problema.

Problema 2: Cuando comienzan a utilizar la aplicación la velocidad de respuesta de los querys es normal, pero con el uso los usuarios notan que los tiempos de respuesta son larguisimos hasta llegar a hacer imposible de usar la aplicación..


Lei otro thread con un problema similar, pero en mi caso el servidor tiene un (1) solo procesador, alguien tiene alguna idea de cual puede ser el problema ??

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 09-06-2005
ferysil2003 ferysil2003 is offline
Miembro
 
Registrado: abr 2004
Posts: 26
Poder: 0
ferysil2003 Va por buen camino
No lo se, pero un detalle, si abres muchos formularios, ¿liberas memoria al cerrarlo?, es decir, si el formulario lo muestras con show, es decir en forma no modal, al cerrarlo, en el evento formclose le pones: Action:=caFree; y si lo presentas en forma modal ¿lo cierras con free?
Responder Con Cita
  #3  
Antiguo 09-06-2005
1111111 1111111 is offline
No confirmado
 
Registrado: feb 2005
Ubicación: Ciudad Jardín
Posts: 25
Poder: 0
1111111 Va por buen camino
Cita:
Empezado por ferysil2003
No lo se, pero un detalle, si abres muchos formularios, ¿liberas memoria al cerrarlo?, es decir, si el formulario lo muestras con show, es decir en forma no modal, al cerrarlo, en el evento formclose le pones: Action:=caFree; y si lo presentas en forma modal ¿lo cierras con free?
Si, si, los formularios los libero todos.

El tema pasa exclusivamente por los querys, es mas, los querys que uso los uso en el main form, sin abrir ningun otro form.

Gracias de todas formas.
Alguna otra solución ??
Responder Con Cita
  #4  
Antiguo 10-06-2005
1111111 1111111 is offline
No confirmado
 
Registrado: feb 2005
Ubicación: Ciudad Jardín
Posts: 25
Poder: 0
1111111 Va por buen camino
Alguien que me de una mano ??

Es posible que se tome memoria y no se libere por algun bug de Interbase o los IBX ?
Responder Con Cita
  #5  
Antiguo 10-06-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
ok

Que Versión de IBX usas? te recomiendo usar FireBird la última versión 1.52....

Saludos....
Responder Con Cita
  #6  
Antiguo 10-06-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Deberías dar más detalle para ponernos en situación.
Qué componentes query usas?, qué hacen exactamente esos querys?, qué propiedades y valores tienen?, has modificado alguna de las que traen por defecto?... en fin, da los máximos detalles posibles.
Responder Con Cita
  #7  
Antiguo 10-06-2005
1111111 1111111 is offline
No confirmado
 
Registrado: feb 2005
Ubicación: Ciudad Jardín
Posts: 25
Poder: 0
1111111 Va por buen camino
Uso la version 7.04 de los IBX.
Los componentes que uso para hacer querys son los TIBSQL y los TIBQuery y para los Store Procedure los TIBStoreProcedure.

El TIBTransaction esta en Read Committed.
El resto de los componentes tiene sus propiedades sin modificar.


Los querys hacen varias cosas.

Puntualmente me centré en un Query para probar...lo único que hace este Query es traer X cantidad de registros (5000 mas o menos).

Ejecuto este Query, me trae los resultado, lo ejecuto, me trae los resultados...etc..etc...

Luego de cada ejecución me incrementa la memoria que ocupa el programa en 12K....y nunca la libera.


Alguna idea ?

Última edición por 1111111 fecha: 10-06-2005 a las 17:54:55. Razón: Error de ortografia
Responder Con Cita
  #8  
Antiguo 10-06-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por ir descartando cosas, prueba a liberar memoria inactiva

Otra cosa que puedes hacer es eliminar los componentes y crearlos de nuevo, por si acaso.

También puedes crear un proyecto nuevo y poner únicamente lo mínimo necesario para hacer esa prueba y ver qué resultados te dá.

Aunque los componentes IBX tienen un pequeño problema por la forma en que tiene implementado la gestión de memoria, en este caso creo que no te afecta porque 5000 registros son muy pocos.

Imagino que habrás comprobado que realmente el "culpable" es el query, no vaya a ser por ejemplo que sea el form que no se libere o algo así
Responder Con Cita
  #9  
Antiguo 11-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por 1111111
Uso la version 7.04 de los IBX.
El tema puede venir por la versión que usas. IBX ha corregido multiples bugs. Si no estoy mal la versión actual es 7.08 o por lo menos 7.07. Te recomiendo actualizarlos.

Podes descargarlos del codecentral, específicamente en la página de Jeff Overcash, autor de la biblioteca.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 16-06-2005
Will Will is offline
Registrado
 
Registrado: abr 2004
Posts: 5
Poder: 0
Will Va por buen camino
Thumbs up Espero te sirva!!

Hola amigo delphilero!!
Hace poco se me presento por lo que entiendo, el mismo problema. Lo solucioné colocando la propiedad Unidirectional="True". Claro que el propósito mío solo era ejecutar actualizaciones y consultas a la base de datos, sin tener que navegar por los datos que regresaba la consulta.
Espero que te sirva!!

Por otro quisiera saber si conoces a alguien que conozca la forma de saber que registro de una tabla se encuentra bloqueada por alguna transacción.
Gracias !!
Responder Con Cita
  #11  
Antiguo 16-06-2005
cahp cahp is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 90
Poder: 21
cahp Va por buen camino
Hola,

comentas que solo lun procesador, pero si se ejecuta sobre win xp, este emula dos procesadores, y creo que lo tienes que inhabilitar de placa.

Nosotros hemos tenido problemas simililares, y se han solucionado poniendo firebird 1.5

saludos
Responder Con Cita
  #12  
Antiguo 18-06-2005
1111111 1111111 is offline
No confirmado
 
Registrado: feb 2005
Ubicación: Ciudad Jardín
Posts: 25
Poder: 0
1111111 Va por buen camino
Cita:
Empezado por Casimiro Notevi
Por ir descartando cosas, prueba a liberar memoria inactiva

Otra cosa que puedes hacer es eliminar los componentes y crearlos de nuevo, por si acaso.

También puedes crear un proyecto nuevo y poner únicamente lo mínimo necesario para hacer esa prueba y ver qué resultados te dá.

Aunque los componentes IBX tienen un pequeño problema por la forma en que tiene implementado la gestión de memoria, en este caso creo que no te afecta porque 5000 registros son muy pocos.

Imagino que habrás comprobado que realmente el "culpable" es el query, no vaya a ser por ejemplo que sea el form que no se libere o algo así
Muchas gracias por el link a ese truco, al menos con esto puedo mantener la cantidad de memoria utilizada a raya.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:11:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi