Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-09-2010
IcebergDelphi IcebergDelphi is offline
Miembro
 
Registrado: may 2003
Ubicación: VillaFlores, Chiapas, Mexico
Posts: 81
Poder: 21
IcebergDelphi Va por buen camino
Question Mi Servicio consume Mucha memoria

Hola amigos, acabo de crear un Servicio que envia por FTP un archivo de Texto al Servidor FTP, en el cual estoy usando Threads (Hilos) y practicamente hace lo siguiente:
1.-Mi Servicio esta Monitoriando Una carpeta de mi equipo, en el cual esta a la espera de que entre un archivo de Texto llamado Factura.txt, que manda el ERP de Facturacion cada vez que el usuario manda a facturar.

2.- Una vez que mi servicio detecta que entro el archivo llamado Factura.txt este lo envia al FTP.

3.- Por Ultimo mi servicio Borra el Archivo Factura.txt de la Carpeta de recepcion de mi equipo.


Hasta ahi todo bien, el unico problema fue que al entrar al administrador de tareas vi que estaba haciendo mucho uso de memoria y va aumentando, por ejemplo he visto que de:27,000 kb va subiendo poco a poco, y en la columna CPU oscila entre 80 y 90 ,yendome a la pestaña rendimiento pude ver que la grafica del Historial de Uso de CPU se dispara.
Esto no me alenta el equipo pero si se traga mucha memoria.

Que podria haber pasado por alto? recuerden que estoy usando Hilos, no quise meter un Timer por que pense que usaria mas memoria, pero
salio lo contrario.
PD: Uso Indy IdFTP

Espero sus opiniones, muchas gracias.
__________________
IcebergDelphi
LIA. Hiber tadeo Moreno Tovilla. INITEC Software
Responder Con Cita
  #2  
Antiguo 03-09-2010
IcebergDelphi IcebergDelphi is offline
Miembro
 
Registrado: may 2003
Ubicación: VillaFlores, Chiapas, Mexico
Posts: 81
Poder: 21
IcebergDelphi Va por buen camino
Cita:
Empezado por IcebergDelphi Ver Mensaje
Hola amigos, acabo de crear un Servicio que envia por FTP un archivo de Texto al Servidor FTP, en el cual estoy usando Threads (Hilos) y practicamente hace lo siguiente:
1.-Mi Servicio esta Monitoriando Una carpeta de mi equipo, en el cual esta a la espera de que entre un archivo de Texto llamado Factura.txt, que manda el ERP de Facturacion cada vez que el usuario manda a facturar.

2.- Una vez que mi servicio detecta que entro el archivo llamado Factura.txt este lo envia al FTP.

3.- Por Ultimo mi servicio Borra el Archivo Factura.txt de la Carpeta de recepcion de mi equipo.


Hasta ahi todo bien, el unico problema fue que al entrar al administrador de tareas vi que estaba haciendo mucho uso de memoria y va aumentando, por ejemplo he visto que de:27,000 kb va subiendo poco a poco, y en la columna CPU oscila entre 80 y 90 ,yendome a la pestaña rendimiento pude ver que la grafica del Historial de Uso de CPU se dispara.
Esto no me alenta el equipo pero si se traga mucha memoria.

Que podria haber pasado por alto? recuerden que estoy usando Hilos, no quise meter un Timer por que pense que usaria mas memoria, pero
salio lo contrario.
PD: Uso Indy IdFTP

Espero sus opiniones, muchas gracias.
Perdon se me olvidaba la parte del codigo on Execute del Servicio lo cual llama al Hilo :

Código Delphi [-]
procedure TMyServiceCFD.ServiceExecute(Sender: TService);
begin
   MainThread:=VigilanteUnidad.Create(True);
   With MainThread Do
   Begin
     FreeOnTerminate:=True;
     Resume;
  end;
 while not Terminated do
  begin
    ServiceThread.ProcessRequests(True);
   With MainThread Do
   Begin
     FreeOnTerminate:=True;
  end;
   
 end;
end;
__________________
IcebergDelphi
LIA. Hiber tadeo Moreno Tovilla. INITEC Software
Responder Con Cita
  #3  
Antiguo 03-09-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Y ¿como vigilas la carpeta que debe recibir el archivo.txt?

Saludos.
Responder Con Cita
  #4  
Antiguo 03-09-2010
IcebergDelphi IcebergDelphi is offline
Miembro
 
Registrado: may 2003
Ubicación: VillaFlores, Chiapas, Mexico
Posts: 81
Poder: 21
IcebergDelphi Va por buen camino
Unhappy

Cita:
Empezado por escafandra Ver Mensaje
Y ¿como vigilas la carpeta que debe recibir el archivo.txt?

Saludos.
Hola escafandra, como te decia tengo una unidad llamada Hilo que realmente es un Trhead, lo chistoso de esto es que tengo una aplicacion que hice ya tiene 2 años atras que igualmente me vigila la carpeta que yo asigne y no me consume memoria, yo creo que es el servicio que hace un continuo loop te paso una parte del codigo del Thread:

Código Delphi [-]
procedure VigilanteUnidad.Execute;  //Se ejecutara el Hilo cada vez que haya algun cambio en algun archivo
Var
  hNotif: THandle;
  P:PAnsiChar;
begin
  SDirVigilar:=P;
  P:=PAnsiChar(SDirVigilar);
  hNotif := FindFirstChangeNotification(P,False,FILE_NOTIFY_CHANGE_FILE_NAME Or   FILE_NOTIFY_CHANGE_DIR_NAME );
  While True do  // Ejecutar siempre
 Begin
   WaitForSingleObject(hNotif, INFINITE);  // Esperamos que se produzca una modificación
    //Syncronize es una funcion o procedimiento del Hilo, que nos servira para llamar a los procedimientos que queramos
    Synchronize(LeeIni);
    FindNextChangeNotification(hNotif);  // y esperamos la siguiente notificación
 end;
end;

ese mismo codigo uso para la aplicacion que hice hace 2 años y no tengo problemas de memoria todo esta relax.

Saludos.
__________________
IcebergDelphi
LIA. Hiber tadeo Moreno Tovilla. INITEC Software
Responder Con Cita
  #5  
Antiguo 03-09-2010
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
El administrador de tareas no es confiable para medidas precisas.

Usa http://technet.microsoft.com/en-us/s.../bb896653.aspx.


Si la memoria sube y sube, tienes un memory leak. Debes tener variables que no estas liberando.
__________________
El malabarista.
Responder Con Cita
  #6  
Antiguo 03-09-2010
IcebergDelphi IcebergDelphi is offline
Miembro
 
Registrado: may 2003
Ubicación: VillaFlores, Chiapas, Mexico
Posts: 81
Poder: 21
IcebergDelphi Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
El administrador de tareas no es confiable para medidas precisas.

Usa http://technet.microsoft.com/en-us/s.../bb896653.aspx.


Si la memoria sube y sube, tienes un memory leak. Debes tener variables que no estas liberando.

Gracias Mamcx, ya estoy bajando el soft de la liga, seguire checando mi codigo y les paso despues el resultado.
__________________
IcebergDelphi
LIA. Hiber tadeo Moreno Tovilla. INITEC Software
Responder Con Cita
  #7  
Antiguo 04-09-2010
IcebergDelphi IcebergDelphi is offline
Miembro
 
Registrado: may 2003
Ubicación: VillaFlores, Chiapas, Mexico
Posts: 81
Poder: 21
IcebergDelphi Va por buen camino
Me quedare con el timer

Cita:
Empezado por IcebergDelphi Ver Mensaje
Gracias Mamcx, ya estoy bajando el soft de la liga, seguire checando mi codigo y les paso despues el resultado.
Les comentare que vine terminando el problema usando un Timer, no se si el Servicio actua como un Loop, pero cuando usaba el Thread se ejecutaba sin parar el Hilo, aun que para mi era mejor ya que al llegar la Factura.txt a la carpeta se disparaba el envio del FTP en menos de un segundo, con el Timer tarda 2 segundos y eso que tengo el Interval a 1000, en fin me quedare con el Timer. saludos y gracias.

__________________
IcebergDelphi
LIA. Hiber tadeo Moreno Tovilla. INITEC Software
Responder Con Cita
  #8  
Antiguo 27-12-2010
Avatar de dalyla2010
dalyla2010 dalyla2010 is offline
Miembro
NULL
 
Registrado: dic 2010
Posts: 16
Poder: 0
dalyla2010 Va por buen camino
Mmm a mi me pasa lo mismo con un procedimiento, pero no supe como liberar las variables, use una funcion para liberar la memoria, y si me ayudo, pero aun asi sigue aumentando la memoria. Se supone que cada que llamo una funcion vuelve a tomar espacio en memoria, y cuando la termino de usar ya no la libera? alguien lo puede aclarar?
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
KDE 4.0 consume un 39% menos que su predecesor sakuragi Noticias 3 20-12-2007 18:17:08
Mucha gente le tiene miedo a Google. marcoszorrilla Noticias 2 06-09-2007 03:43:35
Función consume 100 % procesador Denny OOP 4 26-07-2007 23:39:59
No tengo mucha idea, sorry GaMbiT Impresión 5 19-06-2007 13:14:44
Consume memoria, se porque, pero no se como evitarlo... sostro SQL 11 20-03-2007 16:01:43


La franja horaria es GMT +2. Ahora son las 00:39:42.


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