Guau, creo que o estoy yo muy confundido o están muy confundidos los demás:D
El sistema operativo gestiona la memoria que las aplicaciones le solicitan. Si firefox le pide memoria y memoria y más memoria, le irá dando memoria RAM mientras pueda, y cuando ya no pueda tirará de memoria virtual (swap memory).
Si "enseñamos" a la aplicación a pedir memos memoria, a que reutilice y libere de forma más eficiente y a que mueva los bloques de memoria (vital para evitar fragmentación) de forma más eficiente, sobre cargamos menos la memoria en general y la gestión se hace mucho más rápida.
Muchas veces la cantidad de memoria consumida aumenta espectacularmente porque no se hace un free en el momento adecuado y la velocidad de ejecución puede caer por una gestión ineficiente de los bloques de memoria que tiene asignados por el sistema operativo.
Lo que no entiendo es por qué no se ha implementado un recolector de basura que automatice estas tareas. Supongo que será como matar moscas a cañonazos, pero bueno. A ver como aumenta el rendimiento con la beta 3 (y si mejora aún más en las siguientes versiones, jeje).
Si lo que buscas es mejorar la eficiencia, no puedes meter un "proceso" que esté buscando bloques a ver si se referencian, además de mantener la estructura de punteros necesaria para que eso sea posible.
Si Java incluyó el recolector de basura es porque evitaba muchos errores y el crecimiento insostenible de la aplicación, pero todo tiene un coste, y éste es el del rendimiento.
De hecho la versión de Java para tiempo real ha tenido que permitir no usar el recolector de basura, sino unas especies de malloc y free.
Sobre la gestión de memoria
(Puntos:1)( https://blog.rcorral.es/ | Última bitácora: Martes, 29 Junio de 2010, 11:58h )
El sistema operativo gestiona la memoria que las aplicaciones le solicitan. Si firefox le pide memoria y memoria y más memoria, le irá dando memoria RAM mientras pueda, y cuando ya no pueda tirará de memoria virtual (swap memory).
Si "enseñamos" a la aplicación a pedir memos memoria, a que reutilice y libere de forma más eficiente y a que mueva los bloques de memoria (vital para evitar fragmentación) de forma más eficiente, sobre cargamos menos la memoria en general y la gestión se hace mucho más rápida.
Muchas veces la cantidad de memoria consumida aumenta espectacularmente porque no se hace un free en el momento adecuado y la velocidad de ejecución puede caer por una gestión ineficiente de los bloques de memoria que tiene asignados por el sistema operativo.
Lo que no entiendo es por qué no se ha implementado un recolector de basura que automatice estas tareas. Supongo que será como matar moscas a cañonazos, pero bueno. A ver como aumenta el rendimiento con la beta 3 (y si mejora aún más en las siguientes versiones, jeje).
Saludos
Disculpe que no me disculpe
Re:Sobre la gestión de memoria
(Puntos:2)( http://press.asqueados.net/ | Última bitácora: Jueves, 17 Abril de 2014, 09:50h )
Si Java incluyó el recolector de basura es porque evitaba muchos errores y el crecimiento insostenible de la aplicación, pero todo tiene un coste, y éste es el del rendimiento.
De hecho la versión de Java para tiempo real ha tenido que permitir no usar el recolector de basura, sino unas especies de malloc y free.
Envíos descartados por Mu [barrapunto.com]