Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2006
robinsongm robinsongm is offline
Miembro
 
Registrado: sep 2004
Ubicación: Madrid, España
Posts: 25
Poder: 0
robinsongm Va por buen camino
Question Cómo librarme de un Out Of Memory ???

Hola.

Estoy realizando una aplicación de migración entre bases de datos (BD) de sql server con estructuras distintas...
El caso es que de una tabla de la BD origen debo copiar en 3 tablas de la nueva BD, además de realizar unas 5 consultas en distintas tablas de la nueva BD también. Esto para cada registro de la BD origen.

Otra parte del caso es que son miles de registros, bien por cada uno aumenta unos cuantos kb de memoria (he probado con el administrador de tareas). No obstante esto es para una única tabla, es decir, luego que termine de esta debe continuar con otras...

He tomado estas medidas para ahorrar un poco:

- Libero todos los objetos que he creado para insertar un único registro
que en general son muy pocos. (.Free)

- Cada 50 registros libero memoria con esta linea:
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
Lo bueno de esta línea es que puede reducir hasta la mitad el consumo actual, pero enseguida aumenta nuevamente al consumo antes de este proceso.

- Los campos a copiar (migrar) los llamo por índice y no por el nombre.
Query.Fields[x].AsString (en ocaciones AsInteger,As....);

Aún con todo eso he probado para insertar 2000 registros (con un TOP en la consulta en la BD origen) y el consumo alcanza unos 100 KB. Es lo más que he logrado pues antes era mayor para la misma cantidad de registros. Lo siguiente es que la tabla (de la BD Origen) siguiente a migrar tambíen tiene un monton de registros y aunque el aumento es menor siempre alcanza el "esperado" mensaje exception... Out Of Memory....

Si algo no queda claro, por favor, me lo dicen para aclararlo.

¿Sabe alguien como puedo optimizar esto?
__________________
Ni la utilidad del mentir es sólida, ni el mar de la verdad perjudica mucho tiempo.
Responder Con Cita
  #2  
Antiguo 16-06-2006
Yosuun Yosuun is offline
Miembro
 
Registrado: jun 2004
Ubicación: Bilbao-Bizkaia
Posts: 28
Poder: 0
Yosuun Va por buen camino
Pues no se si estoy en lo cierto o no pero me da la sensacion que el mesaje que te da el Out of memory lo da cuando se referencia a un objeto que no existe , es decir que seguramente abras destruido, y al referenciarlo de nuevo te da ese mensaje.

Un Saludo.
Responder Con Cita
  #3  
Antiguo 16-06-2006
robinsongm robinsongm is offline
Miembro
 
Registrado: sep 2004
Ubicación: Madrid, España
Posts: 25
Poder: 0
robinsongm Va por buen camino
MMM .... no habia pensado en eso... a lo mejor podría ser lo que dices, pero ¿porqué da el error luego de miles de iteraciones (del bucle) y no desde la primera o segunda ???

aun así: Gracias!
__________________
Ni la utilidad del mentir es sólida, ni el mar de la verdad perjudica mucho tiempo.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como puedo librarme de la referencia circular? Lionheart OOP 2 13-12-2005 13:58:33
Como Detectar la Unidad de una Memory Flash???? AGAG4 Varios 1 09-12-2005 10:50:09
Juego Memory Xema OOP 1 16-09-2004 13:59:24
insificient memory fabriciof Conexión con bases de datos 1 26-04-2004 20:03:29
como evitar el error: insufficient memory for this operatiion click Varios 2 10-11-2003 07:03:11


La franja horaria es GMT +2. Ahora son las 09:58:07.


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