# Quản lý bộ nhớ (Go) > Stack vs heap, escape analysis, garbage collector, memory profiling, pprof, memory leaks - 24 câu hỏi phỏng vấn - Senior - [Câu hỏi phỏng vấn: Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van.md) ## 1. Sự khác biệt chính giữa cấp phát trên stack và cấp phát trên heap trong Go là gì? **Câu trả lời** Stack được quản lý tự động và việc cấp phát cực kỳ nhanh (chỉ đơn giản là dịch chuyển stack pointer). Các biến trên stack được tự động giải phóng khi hàm trả về. Heap cần garbage collector để giải phóng bộ nhớ và việc cấp phát chậm hơn vì có sự tham gia của Go runtime. Các biến tồn tại vượt ra ngoài hàm hoặc có kích thước không xác định tại thời điểm biên dịch sẽ nằm trên heap. ## 2. Escape analysis trong Go là gì? **Câu trả lời** Escape analysis là một phân tích tĩnh được trình biên dịch Go thực hiện để xác định xem một biến có thể nằm trên stack hay phải được cấp phát trên heap. Nếu trình biên dịch phát hiện một biến được tham chiếu bên ngoài hàm tạo ra nó (qua một con trỏ được trả về, lưu trong biến toàn cục, v.v.), biến đó 'escape' và sẽ được cấp phát trên heap. Phân tích này tự động tối ưu hóa việc cấp phát bộ nhớ. ## 3. Làm thế nào để xem kết quả escape analysis trong quá trình biên dịch? **Câu trả lời** Cờ -gcflags=-m cho phép xem các quyết định của escape analysis. Sử dụng -m=2 hoặc -m=3 cung cấp thêm chi tiết về lý do một biến escape. Ví dụ 'go build -gcflags=-m=2' sẽ hiển thị các thông báo như 'moved to heap: x' để cho biết một biến đã được chuyển sang heap. Công cụ này rất cần thiết để tối ưu hóa việc cấp phát bộ nhớ trong mã quan trọng. ## Còn 21 câu hỏi nữa - Trong trường hợp nào một biến cục bộ escape sang heap? - Vai trò chính của garbage collector trong Go là gì? Đăng ký miễn phí: https://sharpskill.dev/vi/login ## Các chủ đề phỏng vấn Go khác - [Kiến thức cơ bản về Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-basics.md): 25 câu hỏi, Junior - [Cấu trúc dữ liệu Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-data-structures.md): 20 câu hỏi, Junior - [Interface trong Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-interfaces.md): 18 câu hỏi, Junior - [Xử lý lỗi](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/error-handling.md): 20 câu hỏi, Junior - [Cơ bản về Goroutine](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/goroutines-basics.md): 20 câu hỏi, Junior - [Channels](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/channels.md): 22 câu hỏi, Junior - [Go Modules](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-modules.md): 18 câu hỏi, Mid-Level - [Máy chủ HTTP](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/http-server.md): 24 câu hỏi, Mid-Level - [HTTP Client](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/http-client.md): 18 câu hỏi, Mid-Level - [Mã hóa JSON](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/json-encoding.md): 20 câu hỏi, Mid-Level - [Database/SQL](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/database-sql.md): 22 câu hỏi, Mid-Level - [Gói context](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/context-package.md): 20 câu hỏi, Mid-Level - [Testing](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/testing.md): 22 câu hỏi, Mid-Level - [Các mẫu Concurrency](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/concurrency-patterns.md): 24 câu hỏi, Mid-Level - [Primitive đồng bộ hóa](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/sync-primitives.md): 22 câu hỏi, Mid-Level - [Framework web Go](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/go-web-frameworks.md): 20 câu hỏi, Mid-Level - [Thiết kế API REST](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/rest-api-design.md): 20 câu hỏi, Mid-Level - [gRPC](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/grpc.md): 22 câu hỏi, Mid-Level - [Reflection](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/reflection.md): 20 câu hỏi, Senior - [Tối ưu hóa hiệu năng](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/performance-optimization.md): 22 câu hỏi, Senior - [Generics](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/generics.md): 20 câu hỏi, Senior - [Go Design Patterns](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/design-patterns.md): 24 câu hỏi, Senior - [Microservices](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/microservices.md): 24 câu hỏi, Senior - [Bảo mật và Xác thực](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/security-authentication.md): 24 câu hỏi, Senior - [Docker & Containerization](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/docker-containerization.md): 20 câu hỏi, Senior - [Kubernetes Basics](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/kubernetes-basics.md): 22 câu hỏi, Senior - [Go Nâng cao](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/advanced-go.md): 20 câu hỏi, Senior - [Phát triển CLI](https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/cli-development.md): 20 câu hỏi, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/vi/technologies/go/cau-hoi-phong-van/memory-management