Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-07-2005
arantzal arantzal is offline
Miembro
 
Registrado: oct 2004
Posts: 80
Poder: 20
arantzal Va por buen camino
Post Liberar memoria en Delphi 2005 VCL .NET

Buenasss,
estamos programando en Delphi 2005 VCL .NET, según tenemos entendido en .NET no hace falta liberar memoria ( es decir, no hacen falta los .free), pero y en VCL?????? En la aplicación utilizamos los TAdoStoredProc, los cuales solo abrimos y cerramos (sin liberarlos) la duda que tenemos es si es necesario incluir el free como en el ejemplo siguiente ya que a medida que corre la aplicación se incrementa la utilización de memoria hasta que acaba por dar el mensaje de "System out of memory" :

AnObject := TAsoStoredProc.Create(nil) ;
try
//Do something with the object
finally
AnObject.Free;
end;
Responder Con Cita
  #2  
Antiguo 18-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé si necesario, pero, si el objeto incluye el método "Free" personalmente creo que no está mal utilizarlo. Creo que la VCL.NET se encargará de liberar dicho objeto a la manera de la plataforma .NET.

Los objetos que se crean en .NET pueden ser liberados explícitamente siempre que implementen la interfaz "IDisposable", si bien no es necesario el liberarlos por mor del "recolector de basura" que incluye el entorno de ejecución de la plataforma .NET.

Quiere decirse que sí que es posible liberar objetos explícitamente, y que mucho más será necesario si, como dices, notáis un exceso consumo de memoria por parte de la aplicación que estáis desarrollando.

En C# hay una forma de especificar que un objeto ha de ser liberado en cuanto termine su uso, como es incluir la palabra reservada "using" antes de la instrucción o instrucciones que usarán el objeto el cual creo que de todos modos precisará implementar la interfaz mencionada anteriormente.

Desconozco si en Delphi .NET hay alguna palabra clave similar a esta para el mismo uso. Es posible así también declarar y crear un objeto en una instrucción o instrucciones, el cual objeto será liberado en cuanto dichas instrucciones se procesen.

En fin, yo creo que podrías hacer pruebas para salir de dudas, de todas todas, ni por pienso me hagáis a mí demasiado caso. Quedáis advertidos.

Nota: todos los errores que se observen en estos párrafos pueden ser corregidos: el autor, o sea, yo, agradecería que así sea si fuera menester.
__________________
David Esperalta
www.decsoftutils.com
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 09:13:01.


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