美文网首页golang 编程笔记
【golang】重视内存复用

【golang】重视内存复用

作者: dongzd | 来源:发表于2020-07-06 14:58 被阅读0次
     在性能优化中,内存复用能减少内存申请与释放,提高性能,尤其在大量数据的重复声明中。在golang的内存复用有很多方法,重点在于怎么样避免新建对象,下面介绍简单但作用明显的复用方式:

sync.pool的内存复用,常用于结构体对象复用

type User struct {
    Name string
}
func (u User)Reset(){
      u.Name = ""
}
var userPool = &sync.Pool{
    New: func() interface{} {
        return &User{}
    },
}

func GetUser() *User {
    return userPool.Get().(*User)
}

func PutUser(u *User) {
        u.Reset()
    userPool.Put(u)
}

切片的内存复用

type User struct {
    Name     string
    Location []string
}

// 减少内存分配,下次复用
func (u *User) ResetNew() {
    u.Location = u.Location[:0]
}
// 重新申明
func (u *User) ResetOld() {
    u.Location = make([]string, 0)
}

相关文章

  • 【golang】重视内存复用

    sync.pool的内存复用,常用于结构体对象复用 切片的内存复用

  • Golang 1.14中内存分配、清扫和内存回收

    golang内存分配 Golang的内存分配是由golang runtime完成,其内存分配方案借鉴自tcmall...

  • Go package

    包(package)是多个Golang源码的集合,是一种高级的代码复用方案,换言之Golang的【源码复用】建立在...

  • golang如何打印内存内容

    golang如何打印内存内容

  • Golang对象复用静态代码检查工具

    一、对象复用 在高并发的场景下使用golang,优化GC都会无法回避的问题。搜索「golang 垃圾回收优化」出来...

  • Go语言——内存管理

    Go语言——内存管理 参考: 图解 TCMalloc Golang 内存管理 Go 内存管理 问题 内存碎片:避免...

  • 内存复用技术

    1.内存共享,写时复制虚拟机之间共享一块内存,当虚拟机需要内存时,开辟另一内存空间,修改映射。理解:为了使得虚拟机...

  • golang

    golang携程调度,runtime包 golang内存模型 csp原理 context的原理 slice底层结构...

  • 高频golang面试题:简单聊聊内存逃逸?

    问题 知道golang的内存逃逸吗?什么情况下会发生内存逃逸? 怎么答 golang程序变量会携带有一组校验数据,...

  • bitmap加载优化

    glide中对bitmap的复用逻辑: Bitmap开启了misMutable,支持复用bitmap的内存空间。 ...

网友评论

    本文标题:【golang】重视内存复用

    本文链接:https://www.haomeiwen.com/subject/ucgwqktx.html