Pegada de memória - Memory footprint

A área de cobertura da memória se refere à quantidade de memória principal que um programa usa ou faz referência durante a execução.

A palavra pegada geralmente se refere à extensão das dimensões físicas que um objeto ocupa, dando uma noção de seu tamanho. Na computação, a área de cobertura da memória de um aplicativo de software indica seus requisitos de memória de tempo de execução, enquanto o programa é executado. Isso inclui todos os tipos de regiões de memória ativa, como segmento de código contendo (principalmente) instruções de programa (e, ocasionalmente, constantes), segmento de dados (inicializado e não inicializado), memória heap , pilha de chamadas , além da memória necessária para conter quaisquer estruturas de dados adicionais, como tabelas de símbolos , estruturas de dados de depuração , arquivos abertos, bibliotecas compartilhadas mapeadas para o processo atual, etc., que o programa sempre precisa durante a execução e serão carregados pelo menos uma vez durante toda a execução.

Programas maiores têm pegadas de memória maiores. A área de cobertura da memória de um aplicativo é aproximadamente proporcional ao número e ao tamanho das bibliotecas ou classes compartilhadas que ele carrega, enquanto as bibliotecas estáticas, programas executáveis ​​e áreas de dados estáticos contribuem para uma porção fixa (constante). Os próprios programas geralmente não contribuem com as maiores partes para suas próprias pegadas de memória; em vez disso, as estruturas introduzidas pelo ambiente de tempo de execução ocupam a maior parte da memória. Por exemplo, um compilador C ++ insere vtables , objetos type info e muitos objetos temporários e anônimos que estão ativos durante a execução de um programa. Em um programa Java, a área de cobertura da memória é composta predominantemente do ambiente de tempo de execução na forma da própria máquina virtual Java (JVM) que é carregada indiretamente quando um aplicativo Java é iniciado. Além disso, na maioria dos sistemas operacionais, os arquivos de disco abertos por um aplicativo também são lidos no espaço de endereço do aplicativo, contribuindo assim para sua área de cobertura.

Tendência de uso

Durante a década de 1990, a memória do computador ficou mais barata e os programas com pegadas de memória maiores tornaram-se comuns. Essa tendência deve-se principalmente ao uso generalizado de software de computador, de grandes aplicativos corporativos que consomem grande quantidade de memória (como bancos de dados ), a software de criação e edição de multimídia com uso intensivo de memória. Para lidar com as necessidades cada vez maiores de memória, foram introduzidos sistemas de memória virtual que dividem a memória disponível em porções de tamanhos iguais e as carregam de "páginas" armazenadas no disco rígido conforme necessário.

Essa abordagem para oferecer suporte a programas com grandes pegadas de memória tem sido bem-sucedida. A maioria dos sistemas operacionais modernos, incluindo Microsoft Windows , macOS da Apple e todas as versões do Linux e Unix, fornecem sistemas de memória virtual.

Em sistemas embarcados

Tradicionalmente, os programas de baixo consumo de memória eram importantes para a execução de aplicativos em plataformas incorporadas, onde a memória muitas vezes seria um recurso restrito - tanto que os desenvolvedores normalmente sacrificavam a eficiência (velocidades de processamento) apenas para tornar o espaço do programa pequeno o suficiente para caber no disponível RAM. Por exemplo, a Sun Microsystems lançou uma versão de sua Java Virtual Machine (JVM) para tais dispositivos restritos; ele atende pelo nome de KVM . O KVM funciona em plataformas onde a memória está em kilobytes em oposição aos megabytes (ou mesmo gigabytes ) de memória disponível em um PC doméstico normal ou em dispositivos inteligentes mais modernos.

Veja também

Referências