Ver Mensaje Individual
  #1  
Antiguo 08-03-2012
Gercondi Gercondi is offline
Miembro
 
Registrado: jun 2010
Posts: 12
Reputación: 0
Gercondi Va por buen camino
Incremento de Memoria Virtual al recibir datos de un webservice

Saludos a todos los del club, espero me puedan dar una idea de donde puede estar la falla.

Hace unos dias estoy realizando una aplpicacion cliente servidor utilizando delphi 2010. El servidor debe realizar llamados a unos webservices y el resultado almacenarlo en memoria (en varios clientDataSet) para que luego los clientes se conecten atravez de idTCPCLIENT (indy 10) y soliciten los datos almacenados en memoria del servidor.

El servidor implementa un hilo infinito que cada 5 segundos se conecta a los web services a buscar información.

Todo funciona correctamente, el protocolo de comunicación entre clientes y servidor esta bien.

El problema lo observo una vez pasan 3 o 4 horas el servidor me muestra un mensaje de "Out of Memory". Instale el programa Proces Explorer v15.13 para monitorear el consumo de memoria de la aplicación. El indicador de memoria fisica del proceso del servidor esta bien (maximo llega a 45 MB) pero el indicador de Memoria virtual (especificamente Private Bytes) esta por las nubes mas de 1.5 GB luego de dos horas.

Realice debug al fuente del programa servidor y el aumento de la memoria se presenta cada vez que se reciben los datos del metodo expuesto por el web service en esta linea de codigo:

Código Delphi [-]
ListaOperadores := GetMXCRAFTPortType(False,'',op_HTTPRIO).QuerySPRCMXCRAFT(L_MXCRAFT);

La variable Lista operadores es declarada asi:

Código Delphi [-]
var
ListaOperadores : MXCRAFTSet;

Para llamar al WS hago uso del WSDLImporter y la clase MXCRAFTSet es de tipo TRemotable.

Agradezco de antemano su ayuda. Espero haber sido claro con la información.
Responder Con Cita