Ver Mensaje Individual
  #12  
Antiguo 24-11-2015
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Tratando de comenzar con lo que dices, Al, he querido preparar un programa que sirva a modo de ejemplo, y, me he encontrado con alguna cosa "rara" que paso a comentar:

1º Si en un Timer creo un botón (TButton) y lo destruyo a continuación, repetidamente, noto que el programa no consume ni un ápice de memoria más, quedándose en la memoria que ocupaba al principio de su ejecución. (1)

2º Si en un Timer creo un navegador (TWebBrowser) y lo destruyo a continuación, repetidamente, noto que el programa aumenta el consumo de memoria, incluso con el parche efectuado en "Vcl.OleCtrls.pas". ¡De hecho el método parcheado "GetIDispatchProp" no se ejecuta! (2)

3º Si en un Timer creo un navegador (TEmbeddedWB) y lo destruyo a continuación, repetidamente, noto que el programa automenta el consumo de memoria, incluso con el parche efectuado en "Vcl.OleCtrls.pas". ¡Pero esta vez sí que se ejecuta el método parcheado "GetIDispatchProp"!

Esto me hace pararme a pensar qué demonios puede estar pasando, habida cuenta de que, en efecto, en mi programa sí que he notado mejoría en el consumo de memoria RAM, si bien es cierto que no se pueden comparar mi programa con el ejemplo que he hecho para hacer estas pruebas: probablemente mi programa consuma mucha más memoria, de modo que tal vez mucha de ella se libere, pero otra más o menos pequeña parte no lo haga, es decir, que parece que el problema sigue estando ahí, hasta cierto punto, como parecen demostrar las pruebas que estoy haciendo.

Notas:

1. Sólo si no destruyo los botones creados la memoria aumenta muy poco a poco pero de forma apreciable.

2. Esto me llama la atención doblemente, porque, el compañero que propuso la solución del artículo enlazado, al menos quien escribió el artículo... estaba usando un componente "TEmbeddedWB" y no directamente un "TWebBrowser".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita