This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Phil Bull
philbull@gmail.com 2011
Michael Hill
mdhillca@gmail.com 2011, 2014
O mapa de memória de um processo pode ajudar a diagnosticar certos problemas de memória.
Rafael Fontenelle
rafaelff@gnome.org 2017-2021

# O que é um mapa de memória?

Memória virtualé uma representação da combinação de memória física e espaço de swap em um sistema. Ela permite que processos em execução acessem mais do que a memória física existente mapeando localizações na memória física para arquivos no disco.

Quando um programa é iniciado, o sistema atribui a ele um ID de processo (PID) exclusivo e suas instruções e dados são carregados na memória em páginas. A tabela de páginas de cada processo mapeia a correspondência entre suas páginas na memória virtual e sua localização na memória física. O mapa de memória exibe o uso total de memória virtual do processo e pode ser usado para determinar o custo de memória de executar uma única ou múltiplas instâncias do programa, para garantir o uso das bibliotecas compartilhadas corretas, para ver os resultados de ajustar vários parâmetros de afinação de desempenho que o programa pode ter, ou para diagnosticar problemas como vazamentos de memória.

Se várias cópias de um programa estiverem sendo executadas, as instruções (ou texto) do programa só precisam ser carregadas uma vez na memória física. Cada vez que uma nova instância do programa é iniciada (como um processo único com suas próprias páginas de memória virtual), sua tabela de páginas mapeia a localização do texto na memória virtual para essas instruções na localização da memória real original. Além disso, todas as bibliotecas compartilhadas dinâmicas usadas pelo processo aparecem como distintas na memória virtual, mas são referências compartilhadas a uma única cópia do segmento de texto da biblioteca na memória real. Ao contabilizar o uso total da memória de um processo, é importante observar que o custo das bibliotecas compartilhadas carregadas na memória pode ser distribuído por todos os processos que as utilizam atualmente.

Quando o sistema precisa de mais páginas de memória do que as disponíveis, algumas das páginas existentes serão paginadas ou gravadas no espaço swap. As páginas de texto são marcadas como leitura/execução na memória e não precisam ser escritas para swap, pois podem ser recarregadas de seu local original no disco. As páginas de dados têm permissões de leitura e escrita e, se modificadas na memória, são rotuladas como sujas e, quando designadas para fazer swap, devem ser paginadas. Quando uma página no espaço swap é necessária para um processo em execução, ela precisa ser trocada de volta antes do uso, talvez fazendo com que outra página seja paginada.