Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Delphi/web
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 05-07-2012
Gercondi Gercondi is offline
Miembro
 
Registrado: jun 2010
Posts: 12
Gercondi Va por buen camino
Consulta sobre Web services y Delphi

Saludos a todos los que hacen parte de este foro.

Tengo una aplicación que contiene un modulo cliente y uno servidor. El modulo de servidor lee cada 5 segundos información de varios web services y la almacena en unos Tclientdataset, para que el modulo cliente pueda utilizar estos datos.

Mi duda es: Es normal que aún cuando estoy liberando (con Free()) todos los objetos que se crean (con Create()) para el llamado a los webservices la memoria virtual del proceso crezca aproximada mente un mega cada 2 horas?

Uno de los procesos que mas hace crecer la memoria virtual es el siguiente:

Código Delphi [-]
procedure LlamadosWS.getOperadores;
var
  L_SPRCMXCRAFT: SPRCMXCRAFTQuery;
  xORGID, xCRAFT : SPRCMXCRAFT1.Array_Of_MXStringQueryType;
  ListaOperadores : SPRCMXCRAFTSet;
  I : integer;
  op_HTTPRIO : THTTPRIO;
begin
  try
  L_SPRCMXCRAFT := SPRCMXCRAFTQuery.Create;

  SetLength(xORGID,1);
  xORGID[0] := SPRCMXCRAFT1.MXStringQueryType.Create;
  xORGID[0].&operator := SPRCMXCRAFT1.QueryOperatorType.igual;
  xORGID[0].Text := _OrgID;

  L_SPRCMXCRAFT.LABORCRAFTRATE := SPRCMXCRAFT1.LABORCRAFTRATE3.Create;
  L_SPRCMXCRAFT.LABORCRAFTRATE.ORGID := xORGID;


  SetLength(xCRAFT,1);
  xCRAFT[0] := SPRCMXCRAFT1.MXStringQueryType.Create;
  xCRAFT[0].Text := _ESPECIALIDADES;

  L_SPRCMXCRAFT.LABORCRAFTRATE.CRAFT := xCRAFT;


  op_HTTPRIO := THTTPRIO.Create(nil);
  op_HTTPRIO.HTTPWebNode.UserName := Datamodule1.UsuarioCFZ;
  op_HTTPRIO.HTTPWebNode.Password := Datamodule1.PasswordCFZ;


  ListaOperadores := GetSPRCMXCRAFTPortType(False,'',op_HTTPRIO).QuerySPRCMXCRAFT(L_SPRCMXCRAFT);

  L_SPRCMXCRAFT.Free;
  xORGID[0].Free;
  xCRAFT[0].Free;

  with DataModule2 do
  begin

    CDS_Operadores_WS.EmptyDataSet;
    CDS_Operadores_WS.Close;
    CDS_Operadores_WS.Open;

    Datamodule2.LimpiarCDS(CDS_Operadores_WS);

    for I := 0 to Length(ListaOperadores)  - 1 do
    begin

      try
        if ListaOperadores[i].LABOR[0].STATUS.text = 'ACTIVO' then
        begin
            try
              CDS_Operadores_WS.InsertRecord([ListaOperadores[i].LABORCODE.text,
                                 ListaOperadores[i].LABOR[0].PERSON[0].FIRSTNAME.Text + ' ' + ListaOperadores[i].LABOR[0].PERSON[0].LASTNAME.Text,
                                 ListaOperadores[i].CRAFT.text ,
                                 ListaOperadores[i].LABOR[0].PERSON[0].STATUS.Text,
                                 ListaOperadores[i].LABOR[0].PERSONID.Text]);
            finally
             ListaOperadores[i].Free;
            end;

        end;
      except
        Continue;
      end;

    end;
  end;
  finally
     ListaOperadores := nil;
  end;
end;
Responder Con Cita
  #2  
Antiguo 06-07-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Zona Libre de Madrid, Reino de Dick
Posts: 4.438
Ñuño Martínez Va por buen camino
Es muy difícil responder. Sin embargo, he visto que al final asignas un nil a una variable. Recuerda que con eso no liberas memoria.

Me han recomendado muchas veces la herramienta Valgrind, aunque nunca la he usado por vagancia. Quizá te sirva para encontrar dónde reserva memoria que luego no libera.
__________________
Proyectos actuales ----> Pensando cómo voy a llegar a fin de mes con medio sueldo el año que viene.
Entorno de desarrollo ----> Materia gris.
Responder Con Cita
Respuesta


Herramientas
Desplegado

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
Libros de Consulta sobre Delphi sebaelp Varios 2 20-03-2012 18:08:08
llamar un Delphi web services desde ASP SpyO_O .NET 4 25-09-2008 15:46:44
Delphi 2006 con Sql Server Reporting Services dieleo Impresión 0 12-08-2006 18:23:21
parámetros en Delphi 7 y web services hechos con VS2005 jdiazan .NET 0 27-01-2006 11:19:46
Consulta Sobre Delphi y Access herodes Varios 1 13-12-2005 21:41:47


La franja horaria es GMT +2. Ahora son las 04:56:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi