
Gestion mémoire
Stack vs heap, escape analysis, garbage collector, memory profiling, pprof, memory leaks
1Quelle est la différence principale entre l'allocation sur la stack et l'allocation sur le heap en Go ?
Quelle est la différence principale entre l'allocation sur la stack et l'allocation sur le heap en Go ?
Réponse
La stack est gérée automatiquement et les allocations y sont extrêmement rapides (simple déplacement du stack pointer). Les variables sur la stack sont automatiquement libérées quand la fonction retourne. Le heap nécessite le garbage collector pour libérer la mémoire et les allocations y sont plus lentes car elles impliquent le runtime Go. Les variables qui survivent au-delà de la fonction ou dont la taille n'est pas connue à la compilation vont sur le heap.
2Qu'est-ce que l'escape analysis en Go ?
Qu'est-ce que l'escape analysis en Go ?
Réponse
L'escape analysis est une analyse statique effectuée par le compilateur Go pour déterminer si une variable peut rester sur la stack ou doit être allouée sur le heap. Si le compilateur détecte qu'une variable est référencée en dehors de sa fonction de création (via un pointeur retourné, stockage dans une variable globale, etc.), la variable 'échappe' et sera allouée sur le heap. Cette analyse permet d'optimiser automatiquement les allocations mémoire.
3Comment voir les résultats de l'escape analysis lors de la compilation ?
Comment voir les résultats de l'escape analysis lors de la compilation ?
Réponse
Le flag -gcflags=-m permet de voir les décisions d'escape analysis. Utiliser -m=2 ou -m=3 donne plus de détails sur les raisons pour lesquelles une variable échappe. Par exemple 'go build -gcflags=-m=2' affichera des messages comme 'moved to heap: x' pour indiquer qu'une variable a été déplacée sur le heap. Cet outil est essentiel pour optimiser les allocations mémoire dans du code critique.
Dans quel cas une variable locale échappe-t-elle au heap ?
Quel est le rôle principal du garbage collector en Go ?
+21 questions d'entretien
Autres sujets d'entretien Go
Les bases de Go
Structures de données Go
Interfaces Go
Gestion des erreurs
Goroutines basiques
Channels
Go Modules
Serveur HTTP
Client HTTP
Encodage JSON
database/sql
Package context
Testing
Patterns de concurrence
Primitives de synchronisation
Frameworks web Go
Design d'API REST
gRPC
Reflection
Optimisation des performances
Generics
Design Patterns Go
Microservices
Sécurité & Authentication
Docker & Containerization
Kubernetes Basics
Go Avancé
Développement CLI
Maîtrise Go pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement