Huella de memoria - Memory footprint

La huella de memoria se refiere a la cantidad de memoria principal que un programa usa o hace referencia mientras se ejecuta.

La palabra huella generalmente se refiere a la extensión de las dimensiones físicas que ocupa un objeto, dando una idea de su tamaño. En informática, la huella de memoria de una aplicación de software indica sus requisitos de memoria en tiempo de ejecución, mientras el programa se ejecuta. Esta incluye todo tipo de regiones de memoria activos como segmento de código que contiene (en su mayoría) instrucciones de programa (y ocasionalmente constantes), segmento de datos (tanto inicializado y no inicializado), memoria de pila , la pila de llamadas , además de la memoria requerida para mantener cualquier estructura de datos adicionales, tales como tablas de símbolos , estructuras de datos de depuración , archivos abiertos, bibliotecas compartidas asignadas al proceso actual, etc., que el programa necesita mientras se ejecuta y se cargará al menos una vez durante toda la ejecución.

Los programas más grandes tienen una huella de memoria más grande. La huella de memoria de una aplicación es aproximadamente proporcional al número y tamaño de las bibliotecas o clases compartidas que carga, mientras que las bibliotecas estáticas, los programas ejecutables y las áreas de datos estáticos contribuyen a una porción fija (constante). Los propios programas a menudo no contribuyen en la mayor parte a sus propias huellas de memoria; más bien, las estructuras introducidas por el entorno de tiempo de ejecución ocupan la mayor parte de la memoria. Por ejemplo, un compilador de C ++ inserta vtables , objetos de tipo info y muchos objetos temporales y anónimos que están activos durante la ejecución de un programa. En un programa Java, la huella de memoria se compone predominantemente del entorno de ejecución en forma de máquina virtual Java (JVM) que se carga indirectamente cuando se inicia una aplicación Java. Además, en la mayoría de los sistemas operativos, los archivos de disco abiertos por una aplicación también se leen en el espacio de direcciones de la aplicación, contribuyendo así a su huella.

Tendencia de uso

Durante la década de 1990, la memoria de la computadora se volvió más barata y los programas con mayor huella de memoria se volvieron comunes. Esta tendencia se ha debido principalmente al uso generalizado de software informático, desde grandes aplicaciones empresariales que consumen grandes cantidades de memoria (como bases de datos ), hasta software de edición y creación multimedia que utiliza mucha memoria. Para abordar las crecientes necesidades de memoria , se introdujeron sistemas de memoria virtual que dividen la memoria disponible en porciones de igual tamaño y las cargan desde "páginas" almacenadas en el disco duro según sea necesario.

Este enfoque para respaldar programas con una huella de memoria enorme ha tenido bastante éxito. La mayoría de los sistemas operativos modernos, incluidos Microsoft Windows , macOS de Apple y todas las versiones de Linux y Unix, proporcionan sistemas de memoria virtual.

En sistemas embebidos

Tradicionalmente, los programas que ocupaban poco espacio en la memoria eran importantes para ejecutar aplicaciones en plataformas integradas donde la memoria a menudo era un recurso limitado, tanto que los desarrolladores normalmente sacrificaban la eficiencia (velocidades de procesamiento) solo para hacer que las huellas del programa fueran lo suficientemente pequeñas como para encajar en el espacio disponible. RAM. Por ejemplo, Sun Microsystems sacó una versión de su máquina virtual Java (JVM) para estos dispositivos restringidos; se conoce con el nombre de KVM . El KVM funciona en plataformas donde la memoria está en kilobytes en lugar de los megabytes (o incluso gigabytes ) de memoria disponible en una PC doméstica normal o dispositivos inteligentes más modernos.

Ver también

Referencias