stringtranslate.com

Huella de memoria

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

La palabra huella generalmente se refiere a la extensión de 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 se ejecuta el programa. Esto incluye todo tipo de regiones de memoria activa, como segmentos de código que contienen (principalmente) instrucciones de programa (y ocasionalmente constantes), segmentos de datos (tanto inicializados como no inicializados), [1] memoria de montón , pila de llamadas , además de la memoria necesaria para contener estructuras de datos adicionales. , como tablas de símbolos , estructuras de datos de depuración , archivos abiertos, bibliotecas compartidas asignadas al proceso actual, etc., que el programa necesita durante la ejecución y se cargarán al menos una vez durante toda la ejecución. [2]

Los programas más grandes ocupan más memoria. 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 programas en sí mismos a menudo no contribuyen con la mayor parte de sus propias huellas de memoria; más bien, las estructuras introducidas por el entorno de ejecución ocupan la mayor parte de la memoria. Por ejemplo, un compilador de C++ inserta vtables , objetos de información de tipo 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 las computadoras 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 con uso intensivo de memoria. Para hacer frente a las necesidades de memoria cada vez mayores, 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 enormes huellas de memoria 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 integrados

Tradicionalmente, los programas que ocupaban poca memoria eran importantes para ejecutar aplicaciones en sistemas integrados donde la memoria a menudo era un recurso limitado [1] , hasta el punto de que los desarrolladores normalmente sacrificaban la eficiencia (velocidades de procesamiento) sólo para hacer que las huellas de los programas fueran lo suficientemente pequeñas como para caber. en la RAM disponible. Por ejemplo, Sun Microsystems lanzó una versión de su Java Virtual Machine (JVM) para dispositivos tan restringidos; Se conoce con el nombre de KVM . El KVM funciona en plataformas donde la memoria está en kilobytes , a diferencia de los megabytes (o incluso gigabytes ) de memoria disponible en una PC doméstica normal o en teléfonos móviles y tabletas más modernos.

Ver también

Referencias

  1. ^ abc "Definición de: huella de memoria". Revista PC . Consultado el 1 de agosto de 2012 .
  2. ^ "Reduzca el uso de memoria de Linux". IBM DeveloperWorks . Consultado el 1 de agosto de 2012 .