FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con la memoria de windows
Hola a todos/as
Tengo una aplicacion desarrollada en delphi 5 que llegado a un determinado punto y debido al exceso de formularios me consume mucha memoria y he probado a poner cafree,release,free. El problema es que el tiempo que tarda en liberar realizar la comprobacion el windos para liberarla a veces excede y ya es demasiado tarde. ¿Existe alguna forma de decirle al windows que libere la memoria en el instante actual? (esto me solucionaria el problema) Muchas gracias y un saludo |
#2
|
||||
|
||||
Una pregunta, no tendrás todos los furmularios en "autocreate", en vez de available e irlos creando cuando sea necesario y destruyéndolos al cerrarlos?
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Hola,
Hay un componente en Torry's Delphi Pages de nombre MaxMem que "desfragmenta" la memoria RAM mediante un algoritmo en ensamblador: es gratuito y de código abierto. No sé si es exactamente algo así lo que precisas: diría que no, puesto que esos consumos excesivos de memoria deberían tal vez solucionarse de otra forma, pero, en todo caso, por si te es útil, ahí queda referido. |
#4
|
||||
|
||||
Hola escullar:
He leído otros post que a muchas personas les ha sucedido alguna vez, y la mayoría de esos problemas surgían porque quedaban los query o las tables abierto/a, deberías chequear tambien esa posiblidad. Saludos. |
#5
|
||||
|
||||
Antes de ponerte a aplicar soluciones, conoce la pregunta.
Debes determinar EXACTAMENTE que es lo que vas a arreglar... Basicamente: En las propiedades del proyecto excluye a todos los formularios que no deben iniciar automaticamente (los que si deben son el formulario principal y los datamodules). Donde hagas las llamadas a los formularios, los creas manualmente Asegurate que cierras todos los recuersos externos (ej: Conexiones a bases de datos, accesos a archivos, etc... TODO lo que esta FUERA del codigo de la aplicacion) esto es 100% aplicable incluso para entornos con recolector de memoria... El resto de los problemas que tengas los solucionas: 1- Con un profiler, como MemProof o AQTime 2- Para aplicaciones con gran demanda de memoria y que deben escalar a multiples procesadores, con un administrador de memoria alternativo como FastMM4. Pero fundamentalmente, con buenas practicas de codificacion: 1- Escribir codigo claro 2- Separar funciones: Independizar acceso a datos de GUI de logica 3- Centralizar funcionalidad comun 4- Tener disciplina en la creacion de objetos...
__________________
El malabarista. |
#6
|
|||
|
|||
Espongo el problema de memoria
Hola a todos y muchas gracias por contestar.
El problema es que yo creo los formularios y conforme voy aumentando su numero por otro lado voy liberando. El caso es que cuando uno libera memoria el windows no actua inmediatamente sino que se toma su tiempo y dado un intervalo de tiempo realiza la comprobacion para liberar la memoria. Esto es lo que me ocasiona el problema ya que pasado este tiempo cuando windows hace la comproabación ya es demasiado tarde pues la maquina esta sin recursos y digamos que "explota". Mi intencion es la de decirle a windows que compruebe la memoria a liberar antes de que realice antes la comprobacion por su cuenta. De esta manera controlo los formularios destruidos y liberados y cuando lo crea oportuno decirle a windows "Libera memoria". Un saludo. |
#7
|
||||
|
||||
Buscando en el foro por "libera memoria" se llega a este hilo http://www.clubdelphi.com/foros/show...Libera+memoria
donde se hace referencia al truco de Ians Marteens. Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
|||
|
|||
Muchas gracias
Voy a relizar una pequeña prueba pero la verdad es que tiene buena pinta.
Muchas gracias y un saludo. |
|
|
|