Introdução
memória Linux. O Linux gerencia processos e memória de forma eficiente, combinando RAM física, swap e mecanismos internos como heap, stack e OOM Killer. Entender como isso funciona é essencial para administradores de servidores e desenvolvedores que buscam performance e estabilidade.
1. O que são processos no Linux
Um processo é um programa em execução, identificado por:
- PID (Process ID): identificador único
- PPID (Parent PID): processo pai
- Estado: R (running), S (sleeping), Z (zombie), D (uninterruptible sleep)
- Memória alocada: heap, stack e memória compartilhada
Comandos úteis:
ps aux # lista todos os processos top # monitoramento em tempo real htop # versão amigável do top pstree # processos em árvore kill PID # termina um processo kill -9 PID # força a finalização
2. Estrutura de memória de um processo
Cada processo possui espaço de memória virtual, dividido em:
- Text (código) – instruções do programa
- Data (dados estáticos) – variáveis globais
- BSS (dados não inicializados) – variáveis globais sem valor
- Heap – memória dinâmica (
malloc,new) - Stack – variáveis locais e chamadas de função
Visualização simplificada:
|------------------| | Kernel Space | |------------------| | Stack | <- cresce para baixo |------------------| | Heap | <- cresce para cima |------------------| | BSS | | Data | | Text | |------------------| | Kernel Space |
3. Gerenciamento de memória no Linux
O Linux combina RAM e swap, controlando:
- Alocação de páginas (4 KB)
- Cache e buffers do kernel
- Memória compartilhada
Comando para visualizar memória:
free -h
Exemplo:
total used free shared buff/cache available Mem: 16G 8G 4G 0G 4G 7G Swap: 2G 0G 2G
4. OOM Killer
Quando RAM e swap se esgotam, o Linux ativa o OOM Killer, que encerra processos para liberar memória e evitar travamentos.
Monitoramento em tempo real:
vmstat 2 top
5. Swappiness
Define a tendência de usar swap:
cat /proc/sys/vm/swappiness # verifica sudo sysctl vm.swappiness=10 # ajusta temporariamente
- 0 → evita swap ao máximo
- 100 → usa swap agressivamente
Alteração permanente no /etc/sysctl.conf:
vm.swappiness = 10
6. Monitoramento e prevenção de memory leak
- Memory leak: memória alocada e não liberada
- Comandos para identificar consumo:
ps aux --sort=-%mem | head # top 10 por memória smem # uso detalhado pmap PID # mapa de memória do processo
7. Otimização prática
- Monitore processos com
htopouglances - Limite memória de serviços com
systemdoucgroups - Configure swap estrategicamente
- Configure alertas de memória para evitar OOM Killer
- Limpe cache quando necessário:
sudo sync; echo 3 > /proc/sys/vm/drop_caches
FAQ
Um processo é um programa em execução, com PID, estado e memória alocada.
A RAM é memória física usada pelos processos, enquanto swap é espaço em disco usado quando a RAM se esgota.
Mecanismo do Linux que finaliza processos quando a memória está esgotada, evitando travamentos.
Comandos como top, htop, free -h, vmstat e pmap ajudam a analisar consumo.
Heap é memória para alocação dinâmica, stack guarda variáveis locais e chamadas de função.

