Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ClientDataSet.LoadFromFile() y consumo de memoria (https://www.clubdelphi.com/foros/showthread.php?t=64925)

Walterdf 10-11-2009 18:04:52

ClientDataSet.LoadFromFile() y consumo de memoria
 
Buenas a todos

Estoy trabajando con una aplicación hecha en D6 y FB.
Estoy haciendo algunas pruebas con los métodos SaveToFile() y LoadFromFile() de los ClientDataSet y me doy cuenta que al hacer el Load del archivo (en cualquiera de los formatos que soporta, dfBinary, dfXML...), el incremento de memoria es demasiado.

Tengo dos ClientDataSet: cds1 y cds2.
El cds1 contiene datos provistos por un dataset y lo que hago es:
Código:

cds1.SaveToFile('c:\datos', dfBinary);
El archivo guardado contiene cerca de 15000 registros y pesa unos 2.2MB

y con el cds2, que está totalmente vacío y no está atado a ningún dataset hago lo siguiente:
Código:

cds2.LoadFromFile('c:\datos');
En cuanto me muestra los datos en un dbgrid atado al cds2, la memoria ram usada se incrementa en unos 40MB aprox.
Usando el formato dfXML, se incrementa en unos 60MB.

Porqué pasa esto? hay manera de evitar tal crecimiento o ese el precio de usar esta facilidad en vez de migrar los datos a "mano"?

Probablemente 40MB no parezca tanto pero el problema es que esta aplicacion se usara en PCs con pocos recursos de memoria.

Saludos y gracias desde ya!

rgstuamigo 10-11-2009 21:02:38

Me pregunto si al momento de cargar(leer) los datos desde el archivo tu ClientDataSet ya contiene informacion...pues si es el caso creo que podrias limpiarlo(resetear los datos) antes de cargar los registros ,utilizando el metodo EmptyDataSet, mas o menos asi:
Código Delphi [-]
ClientDataSet1.EmptyDataSet;
Prueba y luego nos comentas como te fue.
Saludos...:)

Walterdf 10-11-2009 21:09:17

Hola rgstuamigo, gracias por tu atención. Te comento:

El clientdataset que uso para cargar el archivo esta vacío. El incremento de memoria se produce al momento de lanzar el método LoadFromFile() y esto lo mido simplemente viendo el monitor de recursos del admin.de tareas de Windows.

Gracias por tu respuesta! y quedo a la espera de mas sugerencias.

Gercondi 06-03-2012 23:59:47

Como resolviste?
 
Saludos, Que información encontraste con respecto a este problema?

Casimiro Notevi 07-03-2012 00:57:20

Cita:

Empezado por Gercondi (Mensaje 427007)
Saludos, Que información encontraste con respecto a este problema?

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

Este hilo es de hace 3 años, de todas formas, si estás leyendo un fichero a memoria, es normal que consuma memoria, dependiendo de la cantidad de datos que se lean, es lógico.


La franja horaria es GMT +2. Ahora son las 17:04:09.

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