PDA

Ver la Versión Completa : Liberar memoria en Delphi 2005 VCL .NET


arantzal
18-07-2005, 09:10:52
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;

dec
18-07-2005, 11:01:47
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.