Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Mi Programa Consume Demasiada Ram

Iniciado por fiero, 05 de Julio de 2004, 10:32:46 PM

« anterior - próximo »

fiero

 Esto es algo que he podido probar con diferentes programas. Lo podeis probar incluso con el notepad.exe:

Con el Administrador de tareas de Windows abierto (si teneis w2000), se abre el notepad.exe, vereis que el uso de memoria del programa es  1600KB.
Se minimiza el programa, ahora el uso de memoria es 170KB...
Se vuelve a restaurar el programa y el uso de memoria es 500KB.

¿Qué a pasado con los 1000KB más que consumía al principio? ¿Se han liberado?


Resulta que mi programa arranca con 12 megas de más, si no minimizo la ventana, esos 12 megas se van arrastrando durante toda la ejecución del programa. Es decir, si cargo una textura de 5 megas, el programa consume 17 megas.

¿Es esto un asunto del sistema y no tiene importancia? ¿Alguien sabe a qué es debido ese uso de memoria de más al inicio de la aplicación?

un saludo

PD: Bueno, he comprobado que pasa en todos los programas. Aunque en el mio esos 12 megas es exagerao.
www.videopanoramas.com Videopanoramas 3D player

Haddd

 Pues con MSAccess es la leche. Parece que el sistema libera recursos cuando se minimiza una aplicación. Y debido a un bug que ya han resuelto por fin con el SP3, no liberaba nunca la memoria en según que casos!! (nooo)

Pero no sé porqué :huh:  

Lord Trancos 2

 Me pasa lo mismo en mi WinXP.

¿Que cosa mas rara, no?  O_O  
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

samsaga2

 Buen truco para liberar memoria :-D

Visual Studio sin minimizar mas de 200Mb, minimizado 4Mb pero ahora lo vuelvo a maximizar y voila ahora solo ocupa 19Mb en memoria. El cabroncete a liberado mas de 180Mb y el disco duro sin pestañear, y entonces voy yo y me lo creo XD.

Lo mejor es que da igual que parezca que libera memoria porque si miro la memoria total libre el sistema ni se inmuta.  

Astharoth

 Hola.

Bueno, veamos, he estado leyendo un poco por encima lo que comentais sobre consumo de memoria y demas y..
No se bien a que medida os referis ya que para un proceso de NT existen varias mediciones.

Por un lado tenemos el "Uso de memoria" (que es el total de memoria paginada para la aplicacion sea esto usado o no)
Por otro lado tenemos el "Tamaño de memoria virtual".. esto se ven en el administrador de tareas.

Si usaramos otro visor de informacion de procesos (como el process explode) veriamos tambien los "Private bytes" que son los que en realidad "nos interesan".

Un proceso de NT tiene por una parte una cantidad de memoria asignada en el rango de direccionamiento virtual (vamos, una correlacion de direcciones virtuales a lineales -> fisicas de memoria) (Esto es el tamaño de memoria virtual). Por otra parte, dispone de una serie de paginas obtenidas (paginas de memoria)  esto es el "uso de memoria", pero realmente no es el uso de memoria del programa en cuestion. Me explico.

Muchos datos pueden ser usados de un proceso a otro (por ejemplo, user32.dll no se carga con cada proceso.. se carga si, en su rango de direccionamiento virtual pero no esta repetido en memoria "fisica") eso hace que el "Uso de memoria" parezca siempre mas gordo de lo que es.

Lo realmente interesante para controlar de una aplicacion son los "Private Bytes", que son aquellos pertenecientes al heap (o heaps) obtenidos para la aplicacion (y que es de donde se va pillando toda la memoria para malloc's, new's y demas) y donde podemos "meter el gambazo".

En cuanto a lo de "minimizar" y demas... brbrbr  y suceden cosas mas curiosas aun! :D Vamos, segun el foco, tiempo de proceso de la aplicacion y demas variables el nucleo de nt pagina o le elimina paginas de su rango de direccionamiento si lo considera necesario.

Este comportamiento cambia de version en version de operativo y tambien si es un server o workstation.

Si de verdad estais interesados en controlar el tema (que tiene bastante miga) en este libro en la pagina 54 comienza la fiesta :D

No recuerdo el enlace del process explode, pero vamos, mirare a ver si lo encuentro para que podais trastear (ademas tambien permite modificar tokens)

Un Saludo

samsaga2

 Bonito libro, como busca la paguina 54 del foro de stratos?  (uoh)
Cita de: "Astharoth"Hola.

Bueno, veamos, he estado leyendo un poco por encima lo que comentais sobre consumo de memoria y demas y..
No se bien a que medida os referis ya que para un proceso de NT existen varias mediciones.

Por un lado tenemos el "Uso de memoria" (que es el total de memoria paginada para la aplicacion sea esto usado o no)
Por otro lado tenemos el "Tamaño de memoria virtual".. esto se ven en el administrador de tareas.

Si usaramos otro visor de informacion de procesos (como el process explode) veriamos tambien los "Private bytes" que son los que en realidad "nos interesan".

Un proceso de NT tiene por una parte una cantidad de memoria asignada en el rango de direccionamiento virtual (vamos, una correlacion de direcciones virtuales a lineales -> fisicas de memoria) (Esto es el tamaño de memoria virtual). Por otra parte, dispone de una serie de paginas obtenidas (paginas de memoria)  esto es el "uso de memoria", pero realmente no es el uso de memoria del programa en cuestion. Me explico.

Muchos datos pueden ser usados de un proceso a otro (por ejemplo, user32.dll no se carga con cada proceso.. se carga si, en su rango de direccionamiento virtual pero no esta repetido en memoria "fisica") eso hace que el "Uso de memoria" parezca siempre mas gordo de lo que es.

Lo realmente interesante para controlar de una aplicacion son los "Private Bytes", que son aquellos pertenecientes al heap (o heaps) obtenidos para la aplicacion (y que es de donde se va pillando toda la memoria para malloc's, new's y demas) y donde podemos "meter el gambazo".

En cuanto a lo de "minimizar" y demas... brbrbr  y suceden cosas mas curiosas aun! :D Vamos, segun el foco, tiempo de proceso de la aplicacion y demas variables el nucleo de nt pagina o le elimina paginas de su rango de direccionamiento si lo considera necesario.

Este comportamiento cambia de version en version de operativo y tambien si es un server o workstation.

Si de verdad estais interesados en controlar el tema (que tiene bastante miga) en este libro en la pagina 54 comienza la fiesta :D

No recuerdo el enlace del process explode, pero vamos, mirare a ver si lo encuentro para que podais trastear (ademas tambien permite modificar tokens)

Un Saludo

Astharoth

 Hola.

Coñe! mil perdones! meti la gamba al meter el enlace :D

El enlace correcto es este

Un Saludo y perdon por las molestias en busqueda recursiva a la pagina 54 xD






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.