FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour COMANDO PARA DESTRUIR OBJETOS ABIERTOS EN MEMORIA
Posts: 102
Joined: Fri May 09, 2008 08:19 PM
COMANDO PARA DESTRUIR OBJETOS ABIERTOS EN MEMORIA
Posted: Thu Mar 14, 2013 03:57 PM

Hola, quisiera saber si hay algun comando o función para cerrar o destruir objetos que se queden abiertos en memoria en fivewin harbour

Gracias,
Jun Fco. Vásquez M.
Rep. Dom.

Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM
Re: COMANDO PARA DESTRUIR OBJETOS ABIERTOS EN MEMORIA
Posted: Thu Mar 14, 2013 05:21 PM

En los lenguajes interpretado es el recolector de basura el que se encarga de ese trabajo.
Si se declara un objeto local y te sales de la funcion donde está definido el sólo se descarga.
Puedes también asignarle null así miObj := null.
El problema es cuando el objeto crea algún recurso externo que conlleve una reserva de memoria que debe ser destruido.
Por ejemplo un objeto tipo DataSource que abre una DBF por ejemplo, aunque se destruya el objeto la dbf sigue abierta salvo que la clase tenga un método que se encargue de cerrarla explicitamente, tipo miObj:Close()

Por suerte las versiones recientes de Harbour tienen el metodo destructor que tu puedes implementar y que será llamado cuando el recolector de basura lo elimine de la memoria.

Si la clase la construyes tu puedes hacer uso a bajo nivel del recolecto de basura y prevenirlo que tiene que liberar el recurso cuando libere el objeto.

También puedes usar la funcion en c hb_gcGripDrop().

Seguramente Antoni Linares, si tiene tiempo podría extenderse un poco más... :mrgreen:

______________________________________________________________________________

Sevilla - Andalucía
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: COMANDO PARA DESTRUIR OBJETOS ABIERTOS EN MEMORIA
Posted: Fri Mar 15, 2013 08:20 AM

Manu,

lo has explicado muy bien :-)

Solo falta explicar un poco más el uso de esas funciones en C a bajo nivel, pero que solo en casos muy puntuales puede hacer falta el usarlas. El objetivo de esas funciones es precisamente evitar que el recolector de basuras intervenga en algunos casos en los que interese.

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion