![]() |
Manejo de memoria
Sera buena idea sustituir el manejador de memoria de delphi.
O sera qu ele estoy dando mal uso. Tengo un memo en un forma y el windows me dice que la aplicacion ocupa 2.123 kb (de aqui en adelante me refiero a lo que me notifica windowscomo memoria en uso por la aplicacion como W:memoria ejm W:2.123 kb) hago click en el boton de cargar y w:2.456 una vez mas w:2.999 y asi susecivamente poro al hacer click en boton de limpiar w:2.999 luego vuelvo a cargar e igual w:2.999 debo hacer click dos veses mas que cambie el uso de memoria de la plicacion Mi pregunta es si windows esta equivocado o delphi no esta liberando la memoria o como deberia hacer para liberar la memoria. |
Podria tratarse de lo que Ian Marteens ya nos habla en su truco Liberando memoria inactiva.
Hasta luego. ;) |
No te preocupes con lo que ves. Empezando porque no es una forma confiable de medir memoria y no estas teniendo en cuenta la administración automatica que hace Delphi con los strings y la clase TStringList y otras cosas (como los caches y precargas de memoria y otras cosas)...
En segundo lugar, los valores que te da el task manager NO son los que supones. Esos NO marcan la VERDADERA memoria sino que incluyen las reservas de memoria que el sistema operativo reserva para la aplicacion (de hecho puede dar MENOS porque no necesariamente muestran los subprocesos u otras cosas). Como dice el articulo de Ian, esa memoria se libera al minimizar la aplicacion. La cosa es que no solo se libera la memoria de inicializacion sino que se resetea la reserva de memoria. En conclusion? Ignora el task manager. No sirve para medir confiablemente el uso de memoria. Peor aun en aplicaciones servidoras. Busca en http://www.sysinternals.com/ verdaderas utilidades al respecto que si son utiles para programadores y administradores de sistemas. Ademas, usar una herramienta como MemProf o AQTime de http://www.automatedqa.com/ es mucha mejor idea. El administrador de Memoria que incluye Delphi es suficientemente bueno, de hecho muy bueno... sin embargo si se cumple que: - La aplicacion es de tipo servidora - Multiples hilos - Multiples procesadores - Periodos prolongados de uso o grandes cantidades de memoria Entonces en ese caso SI justifica buscar un administrador sustituto, debido a que con el administrador de memoria de Delphi la memoria se fragmenta con el tiempo (en estos escenarios de uso) . En base a lo que he leido, este es un administrador de memoria MUY bueno: http://www.nexusdb.com/showpage.asp?Id=98, aunque hay otros disponibles y cualquiera es una mejora sobre el de Delphi para los casos que te puse. |
Bien
Gracias por su respuesta.
Lo que me han dicho me termina de aclarar las dudas. NexusDb Ya lo he probado. Pero se les agradece todo lo dicho. |
La franja horaria es GMT +2. Ahora son las 10:53:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi