Estaba pasando por algunas de las decisiones tomadas para hacer Xara Xtreme, una aplicación de gráficos SVG de código abierto. Su decisión de administración de memoria fue bastante intrigante para mí, ya que ingenuamente di por sentado que la asignación dinámica bajo demanda era la forma de escribir aplicaciones orientadas a objetos.¿En qué situaciones la asignación estática es mejor que la asignación dinámica?
La explicación de la documentación es
¿Cómo en la tierra puede ser estática asignaciones eficiente?
Si está acostumbrado a grandes estructuras de datos dinámicos, esto puede parecerle extraño . En primer lugar, todos nuestros objetos (y así tamaño de asignación) son mucho más pequeños (en promedio) que cada asignación de área dinámica dentro de un programa como Impresión. Esto significa que aunque es probable que haya muchos agujeros dentro de la memoria, son pequeños. Además, tenemos mucho más objetos asignados dentro de la memoria, y así estos agujeros se llenan rápidamente. Por otra parte, administradores de memoria virtuales liberará cualquiera de las páginas de la memoria que no contienen asignaciones y dar a esta memoria de nuevo al sistema operativo para que pueda ser utilizado de nuevo (ya sea por nosotros o por otra tarea).
Nos beneficiaría enormemente de el hecho de que cada vez que asignamos la memoria de esta manera, no tenemos para mover cualquier memoria acerca. Esto probó un cuello de botella en ArtWorks que también se usó muchas pequeñas asignaciones al mismo tiempo. more
En resumen, la presencia de un montón de objetos pequeños y la necesidad de prevenir movimiento memoria son las razones dadas para la elección de la asignación estática. No entiendo bien las razones mencionadas.
Aunque esto se refiere a la asignación estática, lo que veo en el vistazo superficial es que un bloque de memoria se asigna dinámicamente al inicio de la aplicación y se mantiene activo hasta que finaliza la aplicación, simulando aproximadamente la asignación estática.
¿Podría explicar en qué situaciones la asignación estática es mejor que la asignación dinámica bajo demanda para considerarlo como el modo principal de asignación en aplicaciones serias?
Gracias. Ahora veo que el patrón de grupo de objetos es la técnica utilizada en Xara Xtreme. http://en.wikipedia.org/wiki/Object_pool_pattern – rpattabi