Easy-Go-Web3
知识图谱Go 教程React Web3智能合约
需求分析系统设计设计模式Go 微服务
项目实战DevOps
Go 生态React 生态智能合约生态Web3 生态AI × Web3工具箱Web3 公司远程Web3求职
🎯 AA 工程师面试手册博客
GitHub
返回博客列表
Go性能优化GC

Go 内存管理与 GC 调优实战

EasyGo2025-11-1018 分钟

Go 内存分配器

Go 使用 TCMalloc 风格的内存分配器,主要特点:

  • **mcache**: 每个 P 的本地缓存
  • **mcentral**: 中央缓存
  • **mheap**: 堆内存管理
  • 垃圾回收

    Go 使用三色标记清除算法:

  • 白色:未访问
  • 2. 灰色:已访问,子对象未完全访问

    3. 黑色:已访问,子对象已完全访问

    使用 pprof 分析

    go
    1import _ "net/http/pprof"
    2
    3go func() {
    4 http.ListenAndServe(":6060", nil)
    5}()

    访问 http://localhost:6060/debug/pprof/heap 分析内存使用。

    优化技巧

  • 预分配切片容量
  • 2. 使用 sync.Pool 复用对象

    3. 避免不必要的指针

    4. 减少内存逃逸

    Easy-Go-Web3

    构建 Go 后端与 Web3 的学习之路。从基础到进阶,从理论到实践,助你成为全栈区块链开发者。

    学习路径

    • 知识图谱
    • Go 教程
    • Go 微服务
    • 面试手册

    资源中心

    • 工具箱
    • DevOps 工具
    • Web3 生态
    • 博客

    © 2025 Easy-Go-Web3. All rights reserved.

    Created withbyhardybao