Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Algoritmos e 
Programação II
Prof. Dr. Rafael dos Passos 
Canteri
Módulo 2 - Memória e 
manipulação de listas
Unidade 1 - Gerenciamento de memória
Gerenciamento de Memória
Fonte: Pexels
O que é gerenciamento de memória?
● Gerenciamento de memória é o processo de:
○ alocar, 
○ usar e 
○ liberar espaço na memória principal do computador durante 
a execução de programas.
Por que é importante?
● Desempenho.
● Gestão de recursos. 
● Evitar vazamentos de memória.
Arquitetura de memória em Python
● O Python usa memória heap privada para armazenar objetos e 
estruturas de dados.
● O gerenciador de memória lida com a alocação e a liberação.
○ Dependente do interpretador (CPython é o mais comum).
Tipagem dinâmica e memória
● Variáveis em Python são referências a objetos, não 
contêineres.
Tipagem dinâmica e memória
Recurso Python Outras (C, Java, Pascal)
Significado 
de variável
Um nome que aponta para 
um objeto na memória.
Um pedaço de memória (de 
tipo e tamanho fixos) que 
contém um valor.
Ligação de 
tipo
Dinâmico - inferido em 
tempo de execução.
Estático - declarado em 
tempo de compilação.
Reatribuição Só atualiza o nome para 
apontar para outro objeto.
Sobrescreve o valor na 
posição de memória.
Alocação sequencial de memória
● Os dados são armazenados em posições contíguas na 
memória.
● Exemplo clássico: vetores ou arrays.
● O acesso por índice é rápido (O(1)), porque a posição do 
elemento pode ser calculada diretamente.
● Porém, redimensionar exige cópia para outra área da memória, 
o que pode ser custoso.
Alocação encadeada de memória
● Os elementos (nós) são armazenados em endereços dispersos 
na memória, cada um com ponteiro para o próximo.
● Exemplo clássico: listas encadeadas (linked lists).
● Excelente para inserções/remoções em qualquer ponto, sem 
precisar mover os outros elementos.
● Mas o acesso por índice é lento (O(n)), pois exige percorrer nó 
a nó.
Alocação dinâmica de memória
● Python
○ Automática.
○ Usa contador de 
referências + coleta 
de lixo.
○ Mutar um objeto 
afeta todas as 
referências a ele. 
● C/C++
○ Manual.
○ Precisa ser alocada e 
desalocada explicitamente.
○ Mutabilidade depende do 
tipo de valor e se é 
passado por 
referência/valor.
Contagem de referências
● Mecanismo principal para gerenciamento automático de 
memória no CPython.
● Cada objeto tem uma contagem de referências.
● Quando ela cai para zero, a memória é desalocada.
Problemas de Memória
● Vazamento de memória.
● Ocorre quando o programa mantém referências a objetos que 
não são mais utilizados.
● Causas comuns:
○ Manter referências desnecessariamente;
○ Uso de variáveis globais;
○ Closures e referências circulares.
Coleta de Lixo
● Em Inglês (Garbage Collector).
● Lida com referências cíclicas, onde a contagem de referências 
falha.
● Utiliza coleta de lixo geracional:
○ Objetos novos coletados com mais frequência.
○ Objetos velhos com menos frequência.
Ferramentas de gerência de memória
Ferramenta Utilidade
sys.getsizeof() Verifica o tamanho em bytes de um objeto.
gc (módulo interno) Acessa e controla o coletor de lixo.
tracemalloc Rastreia alocação de memória e identifica 
vazamentos.
memory_profiler Mede o consumo linha a linha de scripts Python.
objgraph Visualiza objetos e referências entre eles.
Recapitulação
● Entender como a alocação de memória funciona é essencial 
para um programador.
● Python automatiza o gerenciamento de memória, mas 
entendê-lo ajuda a escrever melhores códigos.
● É importante saber quando intervir e como monitorar o uso da 
memória.
Referências
AGUILAR, Luis J. Fundamentos de programação. 3. ed. Porto Alegre: AMGH, 2008. ISBN 9788580550146. 
Disponível na Biblioteca Digital da UFMS.
PEXELS. Pexels. [S.d.]. Disponível em: https://link.ufms.br/2U2Qr. Acesso em: 15 jun. 2025.
SZWARCFITER, Jayme L.; MARKENZON, Lilian. Estruturas de dados e seus algoritmos. 3. ed. Rio de Janeiro: 
LTC, 2010. ISBN 9788521629955. Disponível na Biblioteca Digital da UFMS.
VANTOL, Alexander. Memory Management in Python. Disponível em: https://link.ufms.br/TYG4W. Acesso em: 
02 jun. 2025.
https://link.ufms.br/2U2Qr
https://link.ufms.br/TYG4W
Licenciamento
Respeitadas as formas de citação formal de autores de acordo com as normas 
da ABNT NBR 6023 (2018), a não ser que esteja indicado de outra forma, todo 
material desta apresentação está licenciado sob uma Licença Creative Commons 
- Atribuição 4.0 Internacional. 
https://creativecommons.org/licenses/by/4.0/
https://creativecommons.org/licenses/by/4.0/

Mais conteúdos dessa disciplina