FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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:
|
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
Aumenta la Memoria Virtual al utilizar el WebService
Al igual que el colega @Gercondi, tengo un Ws que corre entre los servicios de Windows y al realizar las tareas de consumir parametros y devolver resultados el Proceso crece y sigue creciendo a menos que cada tanto reinicie mi Servicio con un net restart WSDemonConuslta; esto pasa inclusive cuando libero los objetos que cree en el proceso con variable:=nil; variable.Free, pero sin importancia.
Algún aporte? |
#4
|
||||
|
||||
Como dije hace cuatro años, es difícil responder. Y también, asignar "nil" no libera memoria. El siguiente código no libera memoria:
Es más, te dará un error puesto que estás intentando llamar a un método de un objeto que no existe (el objeto nil no existe). El código debería ser este:
O lo que es lo mismo:
|
#5
|
||||
|
||||
Si invocas a free sobre un objeto que es nil no se eleva una excepción
|
#6
|
||||
|
||||
¿Seguro? Me parece recordar que sí provoca un error de ejecución por memoria re-liberada o algo así. Aunque puede que esto sea algo exclusivo de Free Pascal.
|
#7
|
||||
|
||||
Totalmente seguro
El metodo free esta implementado asi (o muy similar, sacando los IFDEF segun la plataforma)
Esto es totalmente seguro, jamas te va a dar error:
Ahora, el problema es que el destructor no deja la instancia "limpia" (no asigna nil cuando termina, no deja la memoria en 0000) Esto si te eleva una excepcion AcessViolation:
|
#8
|
||||
|
||||
Ok. Ahora sí me quedó claro. Será entonces eso, que no "limpio" la variable de referencia. Gracias.
|
|
|
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 |
|