
Gerenciamento de memória
Stack vs heap, escape analysis, garbage collector, profiling de memória, pprof, memory leaks
1Qual é a principal diferença entre a alocação na stack e a alocação no heap em Go?
Qual é a principal diferença entre a alocação na stack e a alocação no heap em Go?
Resposta
A stack é gerenciada automaticamente e as alocações são extremamente rápidas (simples movimento do stack pointer). As variáveis na stack são liberadas automaticamente quando a função retorna. O heap requer o garbage collector para liberar memória e as alocações são mais lentas porque envolvem o runtime do Go. As variáveis que sobrevivem além da função ou cujo tamanho não é conhecido em tempo de compilação vão para o heap.
2O que é o escape analysis em Go?
O que é o escape analysis em Go?
Resposta
O escape analysis é uma análise estática realizada pelo compilador do Go para determinar se uma variável pode permanecer na stack ou deve ser alocada no heap. Se o compilador detecta que uma variável é referenciada fora de sua função de criação (via um ponteiro retornado, armazenamento em uma variável global, etc.), a variável 'escapa' e será alocada no heap. Essa análise otimiza automaticamente as alocações de memória.
3Como ver os resultados do escape analysis durante a compilação?
Como ver os resultados do escape analysis durante a compilação?
Resposta
A flag -gcflags=-m permite ver as decisões do escape analysis. Usar -m=2 ou -m=3 fornece mais detalhes sobre por que uma variável escapa. Por exemplo 'go build -gcflags=-m=2' exibirá mensagens como 'moved to heap: x' para indicar que uma variável foi movida para o heap. Essa ferramenta é essencial para otimizar as alocações de memória em código crítico.
Em qual caso uma variável local escapa para o heap?
Qual é o papel principal do garbage collector em Go?
+21 perguntas de entrevista
Outros temas de entrevista Go
Fundamentos de Go
Estruturas de dados em Go
Interfaces em Go
Tratamento de erros
Goroutines básicas
Channels
Go Modules
Servidor HTTP
Cliente HTTP
Codificação JSON
Database/SQL
Pacote context
Testing
Padrões de concorrência
Primitivas de sincronização
Frameworks web Go
Design de API REST
gRPC
Reflection
Otimização de desempenho
Generics
Go Design Patterns
Microservices
Segurança e autenticação
Docker & Containerization
Kubernetes Basics
Go Avançado
Desenvolvimento de CLI
Domine Go para sua proxima entrevista
Acesse todas as perguntas, flashcards, testes tecnicos, exercicios de code review e simuladores de entrevista.
Comece gratis