Página 1 de 1

Se pierde memoria con xHarbour

Publicado: Jue Sep 22, 2005 7:44 pm
por Jorge Mason
Estimados señores,
El siguiente ejemplo se puede apreciar como se pierde memoria en el
Administrador de Tareas de Windows.
Este problema creo que está perfectamente identificado, pero no se si es
porque desconosco un buen método de hacer una destrucción del objeto.
El problema no se dá exclusivamente con classes que tienen DATAS tipo bloque
!
Esto seguramente afecta tambien a Xailer, pero lo desconozco pues no sé si
usan el mismo motor de objetos.
Tampoco conosco una mejor manera de hacer una destrucción de una clase, por
ahora coloco :
oObjeto = NIL
Esa forma es perfectamente válida por muchas clases que poseo en la
actualidad, inclusive con clases que usan DATAS tipo Array.
Espero que esto se solucione porque si no es así estamos perdiendo el tiempo
con xHarbour, y los proyectos como Xailer y Visual xHarbour tendrían una
pésima base.
Saludos
Jorge Mason
#include "FiveWin.ch"
/*
Autor : Jorge Mason
Description : Classes lost memory in windows with bBlock DATAS
Date : 19/09/2005
*/
STATIC oWnd
STATIC oTimer
FUNCTION Main()
DEFINE WINDOW oWnd TITLE "LOST MEMORY WITH MACROS ON CLASS"
DEFINE TIMER oTimer INTERVAL 500 OF oWnd ACTION Timer()
ACTIVATE TIMER oTimer
ACTIVATE WINDOW oWnd
RETURN nil
FUNCTION Timer()
LOCAL oObject
LOCAL n
FOR n = 1 TO 10
oObject := LostClass():New()
oObject = NIL
NEXT
RETURN nil
CLASS LostClass
DATA aArray
DATA bBlock
METHOD New() CONSTRUCTOR
ENDCLASS
METHOD New() CLASS LostClass
LOCAL bBlock := "{||.T.}"
::aArray = {1,2,3,4,5}
::bBlock = &bBlock
RETURN Self

Se pierde memoria con xHarbour

Publicado: Jue Sep 22, 2005 8:18 pm
por jfgimenez
Jorge,
gracias por la información.
Acabo de adaptar tu ejemplo a Xailer (aquí lo tienes por si quieres probarlo
tú mismo); sólo he hecho dos cambios: he cambiado es el periodo del timer a
100ms para que vaya más rápido y he puesto que cambie el caption de la
ventana cada vez que se dispara el timer, para saber por dónde va.
En mis pruebas no se pierde memoria. Por favor, pruebalo tú también.
Una cosa que sí quiero aclarar es que la versión de xHarbour que estoy
usando, que es la misma que tenemos publicada en nuestra web, corresponde
exactamente a como estaba el CVS el día 31-7-2005.
Y respecto al motor de objetos, nosotros tenemos implementada una
ampliación, que da soporte a propiedades y eventos, pero el motor sigue
siendo el mismo. Y esta versión contiene los cambios que hizo Walter hace
unos meses. Lo que no incluye es los últimos cambios que se han hecho en el
motor de objetos para dar soporte a los .hrb.
Si puedes, por favor, prueba FW con nuestra versión de xHarbour y salimos de
dudas.
--
Un saludo,
José F. Giménez


Attached files Memory.zip (1.6 KB)Â

Se pierde memoria con xHarbour

Publicado: Jue Sep 22, 2005 9:20 pm
por Jorge Mason
José,
Gracias por el ejemplo y efectivamente no se pierde memoria con Xailer !
Entonces hay algo raro, porque también compilé con xHarbour CVS y Xailer y
tampoco pierde memoria !
Entonces ... será un problema de Fivewin, realmente no entiendo.
Saludos
Jorge Mason
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=4332f508@ozsrvnegro.ozlan.local...]4332f508@ozsrvnegro.ozlan.local...[/email]
> Jorge,
>
> gracias por la información.
>
> Acabo de adaptar tu ejemplo a Xailer (aquí lo tienes por si quieres
> probarlo tú mismo); sólo he hecho dos cambios: he cambiado es el periodo
> del timer a 100ms para que vaya más rápido y he puesto que cambie el
> caption de la ventana cada vez que se dispara el timer, para saber por
> dónde va.
>
> En mis pruebas no se pierde memoria. Por favor, pruebalo tú también.
>
> Una cosa que sí quiero aclarar es que la versión de xHarbour que estoy
> usando, que es la misma que tenemos publicada en nuestra web, corresponde
> exactamente a como estaba el CVS el día 31-7-2005.
>
> Y respecto al motor de objetos, nosotros tenemos implementada una
> ampliación, que da soporte a propiedades y eventos, pero el motor sigue
> siendo el mismo. Y esta versión contiene los cambios que hizo Walter hace
> unos meses. Lo que no incluye es los últimos cambios que se han hecho en
> el motor de objetos para dar soporte a los .hrb.
>
> Si puedes, por favor, prueba FW con nuestra versión de xHarbour y salimos
> de dudas.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>

Se pierde memoria con xHarbour

Publicado: Vie Sep 23, 2005 12:07 am
por Jorge Mason
Jose,
Con xHarbour puro se pierde memoria,
Seguramente Xailer procesa para su beneficio algun recuperador de memoria,
que puede ser un simple inkey() o el recolector de memoria hb_gcAll()
Entonces con Xailer no es posible ver este problema.
Ya puse un ejemplo con puro xharbour y falla realmente !, la memoeira crece
hasta colapsar el PC y se tranca todo !
Saludos
Jorge
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=4332f508@ozsrvnegro.ozlan.local...]4332f508@ozsrvnegro.ozlan.local...[/email]
> Jorge,
>
> gracias por la información.
>
> Acabo de adaptar tu ejemplo a Xailer (aquí lo tienes por si quieres
> probarlo tú mismo); sólo he hecho dos cambios: he cambiado es el periodo
> del timer a 100ms para que vaya más rápido y he puesto que cambie el
> caption de la ventana cada vez que se dispara el timer, para saber por
> dónde va.
>
> En mis pruebas no se pierde memoria. Por favor, pruebalo tú también.
>
> Una cosa que sí quiero aclarar es que la versión de xHarbour que estoy
> usando, que es la misma que tenemos publicada en nuestra web, corresponde
> exactamente a como estaba el CVS el día 31-7-2005.
>
> Y respecto al motor de objetos, nosotros tenemos implementada una
> ampliación, que da soporte a propiedades y eventos, pero el motor sigue
> siendo el mismo. Y esta versión contiene los cambios que hizo Walter hace
> unos meses. Lo que no incluye es los últimos cambios que se han hecho en
> el motor de objetos para dar soporte a los .hrb.
>
> Si puedes, por favor, prueba FW con nuestra versión de xHarbour y salimos
> de dudas.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>

Se pierde memoria con xHarbour

Publicado: Vie Sep 23, 2005 7:32 am
por Jorge Mason
Josè,
Al parecer ya está arreglado, según indicó Ron Pinkas, he bajado el último
CVS y realmente ahora no se pierde memoria.
Saludos y gracias a todos
Jorge Mason
www.htcsoft.cl
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=4332f508@ozsrvnegro.ozlan.local...]4332f508@ozsrvnegro.ozlan.local...[/email]
> Jorge,
>
> gracias por la información.
>
> Acabo de adaptar tu ejemplo a Xailer (aquí lo tienes por si quieres
> probarlo tú mismo); sólo he hecho dos cambios: he cambiado es el periodo
> del timer a 100ms para que vaya más rápido y he puesto que cambie el
> caption de la ventana cada vez que se dispara el timer, para saber por
> dónde va.
>
> En mis pruebas no se pierde memoria. Por favor, pruebalo tú también.
>
> Una cosa que sí quiero aclarar es que la versión de xHarbour que estoy
> usando, que es la misma que tenemos publicada en nuestra web, corresponde
> exactamente a como estaba el CVS el día 31-7-2005.
>
> Y respecto al motor de objetos, nosotros tenemos implementada una
> ampliación, que da soporte a propiedades y eventos, pero el motor sigue
> siendo el mismo. Y esta versión contiene los cambios que hizo Walter hace
> unos meses. Lo que no incluye es los últimos cambios que se han hecho en
> el motor de objetos para dar soporte a los .hrb.
>
> Si puedes, por favor, prueba FW con nuestra versión de xHarbour y salimos
> de dudas.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>