FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Gestion de la memoria
Hola a todos, tengo una pregunta tecnica que me gustaria resolver para quedarme tranquilo. Estoy desarrollando una aplicacion en delphi para android y estoy utilizando el patrón arquitectónico "modelo-vista-controlador", aparentemente todo funciona, pero si he notado que cuando la app trabaja mucho la memoria ram del dispostivo se llena (aunque no considerablemente), lo que implica que no se esta liberando bien la memoria y particularmente tengo una duda:
tengo una clase modelo generica que crea un componente tsqlquery en tiempo de ejecucion, el controlador llama al modelo y este devuelve un tsqlquery cargado con la consulta pertinente, a continuacion el controlador delvuelve el tsqlquery al formulario(vista). Os pongo un ejemplo generico: <<vista>> type TForm2 = class(TForm) procedure FormShow(Sender: TObject); private sql:tsqlquery; public { Public declarations } end; implementation procedure TForm1.FormShow(Sender: TObject); var cliente:tcliente; begin cliente:= Tcliente.create; //esta funccion del controlador cliente carga el tsqlquery con la lista de clientes. cliente.listarcliente(sql); // una vez cargado la variable sql se realizan mas operaciones; end; < controlador cliente, funcion listar cliente > procedure TCliente.ListarClientes (var SQL: TSQLQUERY); var modelocliente: TModeloCliente; begin // cuando se ejecuta el contructor del modelo cliente, éste crea un tsqlquery y lo inicializa, el destrucctor de la clase libera dicho tsqlquery. modelocliente:=TModeloCliente.Create; // esta funcion devuelve el tsqlquery creado en el contructor y cargado con la consulta. SQL:= modeloCliente.ListarClientes(); end; Mi pregunta es, ¿ESTA ASIGNACION SE COPIA POR VALOR O POR REFERENCIA? SQL:= modeloCliente.ListarClientes(); Lo que si puedo decir es que una vez finalizada la funcion del controlador, el destructor del modelo cliente actua y libera el tsqlquery. Aun así la variable sql del formulario esta correctamente cargada y no esta liberada, lo que me hace pensar que es por copia o que no se esta liberado bien. El problema de la ram puede venir por ahí. cada vez que se crea el modelo se crea un nuevo tsqlquery, ¿se habra liberado el espacio reservado para el anterior? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Gestion de proyectos | Angel Vicente | Varios | 0 | 15-03-2010 14:37:36 |
gestion de memoria delphi | joni | Varios | 1 | 17-03-2005 21:03:36 |
ISC ERROR CODE:335544344 I/O error for file "c:\gestion\gestion.gdb" | eliasterrero | Firebird e Interbase | 2 | 28-06-2004 12:20:25 |
Gestion de Memoria | craven | Varios | 1 | 04-07-2003 04:31:16 |
Gestión de Memoria | ogorut | Varios | 2 | 09-05-2003 17:26:11 |
|